话说有段时间没有做本地缓存方面的需求了,索性近期正好接到了类似需求,最终采用了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 ~

android debug 生成的 apk 有签名吗 android debug database_本地数据库

  • 一般正常情况下,均可通过上方提示的链接查看当前项目的数据库、sp 内容

注1:如通过PC使用该工具查看设备数据库,需保持俩端(PC端、设备端)同处同一局域网内(一般表现为连接同一wifi网络)注2:查看数据库时请打开手机APP,否则游览器检测不到

注3:这里我用的locahost主要采用的另一种连接USB的方式去查看的数据库内容,并不影响展示效果~

android debug 生成的 apk 有签名吗 android debug database_数据库工具_02


常见问题
端口冲突:默认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命令显示无法找到,可能是你还没有进行配置,具体的配置方法,自行百度一下吧 ~

  1. As 的 Terminal 内执行以下adb命令
//两端的通信的tcp层的地址,第一个端口是主机,第二个端口是设备端口(如果有给设备设置过端口,则使用对应的端口号)
 adb forward tcp:8080 tcp:8080
  1. PC的浏览器中输入以下网址
//此处端口号为上方设置的第一个端口号
 http://localhost:8080
如何获取设备Wifi IP 和 移动网络 IP ?

图例为我的测试oppo手机 ~

  • 已连接wifi

wifi列表 - 对应wifi的右侧详细信息

android debug 生成的 apk 有签名吗 android debug database_端口号_03


wifi详情 - IP地址

android debug 生成的 apk 有签名吗 android debug database_数据库_04

  • 移动网络

设置 - 关于手机

android debug 生成的 apk 有签名吗 android debug database_数据库工具_05


关于手机 - 状态信息

android debug 生成的 apk 有签名吗 android debug database_数据库_06


状态信息 - IP地址

android debug 生成的 apk 有签名吗 android debug database_数据库工具_07