Android Debug Database作用:
- 查看所有数据库。
- 查看应用程序中使用的共享首选项中的所有数据。
- 在给定的数据库上运行任何sql查询,以更新和删除您的数据。
- 直接编辑数据库值。
- 直接编辑共享的首选项。
- 直接在数据库中添加一行。
- 在共享首选项中直接添加键值。
- 删除数据库行和共享首选项。
- 搜索您的数据。
- 排序数据。
- 下载数据库。
- Debug 内存中的数据库
所有这些功能都无需root你的设备
注意: 只能debug模式下看得到
将此添加到您的应用程序的build.gradle
debugImplementation'com.amitshekhar.android : debug- db : 1.0.6 '
结合使用Android调试加密数据库
debugImplementation'com.amitshekhar.android : debug-db- encrypt : 1.0.6 '
为了提供数据库的密码,您应该在Gradle中添加该密码:DB_PASSWORD_ {VARIABLE},例如,如果PERSON是数据库名称:DB_PASSWORD_PERSON
debug {
resValue("string", "DB_PASSWORD_PERSON", "password")
}
使用debugImplementation
它,使其仅在您的调试版本中编译,而不在发行版本中编译。
使用方式:
方式1
注意: 您的Android手机和笔记本电脑应连接到同一网络(Wifi或LAN)。
在Logcat中输入D/DebugDB,即可查看ip与端口,在浏览器访问即可。
D/DebugDB: Open http://XXX.XXX.X.XXX:8080 in your browser
例如:如下本地地址
您也可以始终通过调用方法从代码中获取调试地址网址 DebugDB.getAddressLog();
打开后网页中显示如下:
方式2(推荐)
如果是通过USB调试
此时在Terminal输入
adb forward tcp:8080 tcp:8080
例如:
然后再浏览器访问localhost:8080即可看到数据库中的结构及各表的内容。
注意:如果要使用8080以外的其他端口。在buildTypes下的app build.gradle文件中进行以下更改
debug {
resValue("string", "PORT_NUMBER", "8081")
}
添加字段
其他功能
1 添加自定义数据库文件
Android Debug Database是自动初始化的,因此,如果要调试自定义数据库文件,请添加以下方法并调用
public static void setCustomDatabaseFiles(Context context) {
if (BuildConfig.DEBUG) {
try {
Class<?> debugDB = Class.forName("com.amitshekhar.DebugDB");
Class[] argTypes = new Class[]{HashMap.class};
Method setCustomDatabaseFiles = debugDB.getMethod("setCustomDatabaseFiles", argTypes);
HashMap<String, Pair<File, String>> customDatabaseFiles = new HashMap<>();
// set your custom database files
customDatabaseFiles.put(ExtTestDBHelper.DATABASE_NAME,
new Pair<>(new File(context.getFilesDir() + "/" + ExtTestDBHelper.DIR_NAME +
"/" + ExtTestDBHelper.DATABASE_NAME), ""));
setCustomDatabaseFiles.invoke(null, customDatabaseFiles);
} catch (Exception ignore) {
}
}
}
2 添加内存中的数据库
由于该库是自动初始化的,因此,如果要debug内存中的数据库,请添加以下方法并调用
public static void setInMemoryRoomDatabases(SupportSQLiteDatabase... database) {
if (BuildConfig.DEBUG) {
try {
Class<?> debugDB = Class.forName("com.amitshekhar.DebugDB");
Class[] argTypes = new Class[]{HashMap.class};
HashMap<String, SupportSQLiteDatabase> inMemoryDatabases = new HashMap<>();
// set your inMemory databases
inMemoryDatabases.put("InMemoryOne.db", database[0]);
Method setRoomInMemoryDatabase = debugDB.getMethod("setInMemoryRoomDatabases", argTypes);
setRoomInMemoryDatabase.invoke(null, inMemoryDatabases);
} catch (Exception ignore) {
}
}
}
官方例子也有很多
运行起来之后显示如下
打开网页之后如下:
参考:
https://github.com/amitshekhariitbhu/Android-Debug-Database
此外,Facebook出品的工具,Stetho也是可以在浏览器去查看数据库