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

举报
福州司马懿 发表于 2021/11/19 03:29:48 2021/11/19
【摘要】 项目介绍 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'
}

  
 
  • 1
  • 2
  • 3

对于加密数据库,例如 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'
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

另外,还可以通过 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  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();
	    }
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

通过浏览器查看数据库

  1. 如果电脑和手机在同一个局域网中,直接用浏览器打开DebugDB.getAddressLog() 返回值中的地址即可。
  2. 如果用的是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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。