zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 使用浏览器查看数据库内容

Android数据库浏览器 查看 内容 使用
2023-09-11 14:22:56 时间

项目介绍

Android Debug Database是用于调试安卓应用中【数据库】和【shared preferences】的工具。

GitHub地址
https://github.com/amitshekhariitbhu/Android-Debug-Database

功能

  • 查看所有的databases
  • 查看应用程序中所使用的shared preferences所有数据
  • 在给定数据库中运行SQL语句进行增删改查的操作
  • 直接编辑数据库的值
  • 直接编辑shared preferences的值
  • 直接在数据库中添加一行数据
  • 在shared preferences中直接添加键值对
  • 直接删除数据库和shared preferences的数据
  • 搜索数据
  • 数据排序
  • 下载数据库
  • 在内存中调试

添加依赖

在对应模块下的 build.gradle 文件中添加依赖

dependencies{
    debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
}

对于加密数据库,例如 sqlcipher

  • 需要将依赖 debug-db 改为 debug-db-encrypt
  • 并且在defaultConfig或buildTypes里,添加 debug 变量,指明数据库密码
android {
	defaultConfig {
//		debug {
//		    resValue("string", "DB_PASSWORD_${数据库名称}", "password")
//		}
	}
	buildTypes {
		debug {
		    resValue("string", "DB_PASSWORD_${数据库名称}", "password")
		}
	}
}
dependencies{
    debugImplementation 'com.amitshekhar.android:debug-db-encrypt:1.0.6'
    api 'net.zetetic:android-database-sqlcipher:4.4.1'
}

另外,还可以通过 resValue("string", "PORT_NUMBER", "8081") 修改服务器端口

获取服务器地址

  1. 代码调用
import com.amitshekhar.DebugDB;
...
public static void showDebugDBAddress(Context context) {
	if (BuildConfig.DEBUG) {
	    String address = DebugDB.getAddressLog();
	    Log.i(TAG, "DebugDBAddress : " + address);
	}
}
  1. 反射
    既然可以直接调,那为什么要反射呢?这是因为 debugImplementation 只在 debug 模式才会导入该模块。当应用打 release 包的时候,import 就会报程序包不存在的错误了。因此,使用反射就能避免去 import 从而也不用在打 release 包的时候去改代码了
public static void showDebugDBAddress(Context context) {
	if (BuildConfig.DEBUG) {
	    try {
		    Class<?> debugDB = Class.forName("com.amitshekhar.DebugDB");
		    Method getAddressLog = debugDB.getMethod("getAddressLog");
		    Object value = getAddressLog.invoke(null);
		    String address = String.valueOf(value);
		    Log.i(TAG, "DebugDBAddress : " + address);
	    } catch (Exception e) {
		    e.printStackTrace();
	    }
	}
}

通过打印可以发现,getAddressLog() 方法实际打印的是一个包含地址的提示信息。
在这里插入图片描述

通过浏览器查看数据库

  1. 如果电脑和手机在同一个局域网中,直接用浏览器打开DebugDB.getAddressLog() 返回值中的地址即可。
  2. 如果用的是USB或者AVD,可能访问不了!
    打开 Terminal,输入 adb forward tcp:8080 tcp:8080
    adb forward 命令可以设置 PC 端的任意端口的 TCP 请求转发到已连接的 Android 设备上的指定端口上。 这样,使用浏览器访问localhost:8080,就能看到数据库的结构及各表的内容了

如下图所示,不仅可以看到应用的数据库,连sp都看得一清二楚,调试非常方便
在这里插入图片描述