话说有段时间没有做本地缓存方面的需求了,索性近期正好接到了类似需求,最终采用了GreenDao数据库缓存数据,为方便查询数据库,故采用了一款 三方框架 - Android-Debug-Database ,提升了不少工作效率 ~
搭档篇
- DDMS调试之旅
- 使用Stetho查看真机数据库
- Android Debug Database 本地数据库调试工具
- Android Studio - Database Inspector 调试数据库
在此之前我查询本地数据库的时候,一般采用 DDMS、Stetho 俩款工具,不过没有当前这款工具便捷,特此记录一波 ~
话说,如果你的As已经升级到4.1的话,完全可以用4.1提供的工具,更方便快捷,关于此工具的具体使用方式可直接前往 Android Studio - Database Inspector 调试数据库
- 基础知识
- 实践演练
- 常见问题
- 端口冲突:默认8080端口被占用,如何改变当前项目的端口号?
- 框架提供连接访问无效,是否还有其他方式查询数据库?
- 如何获取设备Wifi IP 和 移动网络 IP ?
基础知识
Android-Debug-Database 是一款挺早的三方数据库查询工具,主要被广泛使用的原因是功能完善、集成简单,使用方便;
关于其内部的实现的原理,则是在项目集成框架Android-Debug-Database后,为当前应用程序开启了一个线程,此线程不断的处理浏览器发过来的Socket请求,根据Socket发过来的内容进行判断,然后根据不同的请求进行处理,最后返回不同的结果;
而游览器的数据来源则是Android-Debug-Database将具有交互性的html发送给了浏览器 ~
优缺点
优点
- 集成简单,操作方便
- 支持查看应用内所有的数据库、表
- 支持对数据库、表的增、删、改、查
- 支持使用SQL语句操作数据库
- 支持下载db数据库文件
- 支持查看应用内所有SP存储的内容
- 支持对SP的增、删、改、查
缺点
- 不支持relase模式下的调试
release {
//可尝试加入该属性在release环境下进行调试
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
- 不支持手机移动网络IP的调试
实践演练
- 在 bulid.gradle(Model)加入依赖,然后直接启动项目
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
- 如启动项目后,在Logcat中有类似信息则表明已完成集成
Here:要保证PC、手机建立在同一局域网! 当然最好用同一个wifi ~
- 一般正常情况下,均可通过上方提示的链接查看当前项目的数据库、sp 内容
注1:如通过PC使用该工具查看设备数据库,需保持俩端(PC端、设备端)同处同一局域网内(一般表现为连接同一wifi网络)
注2:查看数据库时请打开手机APP,否则游览器检测不到
注3:这里我用的locahost主要采用的另一种连接USB的方式去查看的数据库内容,并不影响展示效果~
常见问题
端口冲突:默认8080端口被占用,如何改变当前项目的端口号?
项目集成后一般端口号都默认为8080,但因8080比较容易被占用,所以可自行在build.gradle(Model)中的buildTypes标签内设置端口号,具体如下
android {
compileSdkVersion 28
defaultConfig {
applicationId "nkwl.com.greendaodemo"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//Here ~
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
//通过此处进行设置
resValue("string", "PORT_NUMBER", "8081")
}
}
}
框架提供连接访问无效,是否还有其他方式查询数据库?
有,必须有,我们还可以使用USB连接,查看数据库 > <
原理:主机特定端口上的请求将被转发到设备的特定端口
如adb命令显示无法找到,可能是你还没有进行配置,具体的配置方法,自行百度一下吧 ~
- As 的 Terminal 内执行以下adb命令
//两端的通信的tcp层的地址,第一个端口是主机,第二个端口是设备端口(如果有给设备设置过端口,则使用对应的端口号)
adb forward tcp:8080 tcp:8080
- PC的浏览器中输入以下网址
//此处端口号为上方设置的第一个端口号
http://localhost:8080
如何获取设备Wifi IP 和 移动网络 IP ?
图例为我的测试oppo手机 ~
- 已连接wifi
wifi列表 - 对应wifi的右侧详细信息
wifi详情 - IP地址
- 移动网络
设置 - 关于手机
关于手机 - 状态信息
状态信息 - IP地址