Android 使用浏览器查看数据库内容
【摘要】
项目介绍
Android Debug Database是用于调试安卓应用中【数据库】和【shared preferences】的工具。
GitHub地址 https://github.com/amit...
项目介绍
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")
修改服务器端口
获取服务器地址
- 代码调用
import com.amitshekhar.DebugDB;
...
public static void showDebugDBAddress(Context context) {
if (BuildConfig.DEBUG) {
String address = DebugDB.getAddressLog();
Log.i(TAG, "DebugDBAddress : " + address);
}
}
- 反射
既然可以直接调,那为什么要反射呢?这是因为 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() 方法实际打印的是一个包含地址的提示信息。
通过浏览器查看数据库
- 如果电脑和手机在同一个局域网中,直接用浏览器打开
DebugDB.getAddressLog()
返回值中的地址即可。 - 如果用的是USB或者AVD,可能访问不了!
打开 Terminal,输入adb forward tcp:8080 tcp:8080
adb forward 命令可以设置 PC 端的任意端口的 TCP 请求转发到已连接的 Android 设备上的指定端口上。 这样,使用浏览器访问localhost:8080
,就能看到数据库的结构及各表的内容了
如下图所示,不仅可以看到应用的数据库,连sp都看得一清二楚,调试非常方便
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/109855509
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)