什么是 HarmonyOS Debug Database?
HarmonyOS Debug Database (debug-db) 是一款功能强大的鸿蒙应用开发三方库,方便开发人员在应用程序 Debug 版本下快速调试应用的关系型数据库 (RdbStore)、用户首选项 (Preferences) 、键值数据库 (KVStore)
你可以点击下面的链接直接使用和获取 HarmonyOS Debug Database:
OpenHarmony:ohpm.openharmony.cn/#/cn/detail…
gitee:gitee.com/ohadss/debu…
与 Android-Debug-Database 相似, HarmonyOS Debug Database 可使开发者以非常简单的方式在浏览器中直接查看和操作三种 HarmonyOS 数据库,提升调试效率。
HarmonyOS Debug Database (debug-db) 具有什么功能?
在 debug-db 中,以下所有的功能都可以在不需要对设备进行 Root 操作(无需Root设备)的情况下使用:
- 查看所有的RdbStore数据库
- 查看指定RdbStore数据库中的所有表
- 查看RdbStore数据库中指定表的所有数据
- 在指定的RdbStore数据库上运行任何SQL查询来创建、删除数据库,或增删改查数据库数据
- 直接对RdbStore数据进行增删改查
- 下载指定RdbStore对应的数据库文件
- 查看所有的Preferences
- 查看指定Preferences中所有首选项数据
- 直接对Preferences数据进行增删改查
- 查看所有的KVStore
- 查看指定KVStore中所有键值对数据
- 直接对KVStore数据进行增删改查
如何使用 debug-db?
debug-db 的使用非常简单,分为简单使用和进阶使用两种,你可以根据自己的需要进行配置:
下载安装
首先需要对 debug-db 进行下载安装,在 Terminal 中输入以下命令:
ohpm install @hadss/debug-db
若安装成功,应用的 oh-package.json5文件中会出现:
"devDependencies": {
"@hadss/debug-db" : "1.0.0-rc.0"
}
简单使用
如果你只是想应用 debug-db 的强大功能,可以参考下面的使用方法:
import {DebugDB} from @hadss/debug-db;
...
const context = getContext(this) as common.UIAbilityContext;
DebugDB.initialize(context); // 在Log中访问 http://XXX.XXX.XXX.XXX:8080/index.html
进阶使用
当你不希望在应用的 Release 包中加入 debug-db 的冗余代码,或者期望自定义服务端的启动端口时,可以参考进阶使用:
1、开启条件编译
为了在项目打包时通常不希望将 Debug 版本使用的三方库打包进 Release 版本的 HAP 包中,首先需要在项目的build-profile.json5 配置文件中加入条件编译 参数,并设置:
"buildOption":{
"arkOptions":{
"branchElimination":true
}
}
关于编译选项的配置,详情可参考:developer.huawei.com/consumer/cn…
2、在应用中导入 debug-db,设置 UIAbilityContext 及服务器运行的端口 (默认为8080)
下面为在应用中 ability 的 aboutToApper 阶段动态导入并启动 debug-db 的一个完整示例。你也可以在应用程序的其他位置启动服务:
import {common} from '@kit.AbilityKit';
import {DEBUG} from 'BuildProfile';
...
aboutToApper():void{
if(DEBUG){
const context = getContext(this) as common.UIAbilityContext;
const port = 8080;
import('@hadss/debug-db').then(async ns => {
await ns.DebugDB.initialize(context,port); // context为必要参数,port为可选参数
})
}
}
由于已开启了条件编译,编译器会对 BuildProfile 中的 DEBUG 字段进行判断,并根据当前打包的环境 (Debug 或 Release) 对未生效的代码进行编译剪枝,编译生成的 HAP 包中仅包含开发者的项目代码。
3、在浏览器中访问 DebugDB
当开发者启动应用程序后,应用后台会自动启动 DebugDB 服务器,若服务成功启动,则可以在DevEco Studio的Log界面查看到以下日志:
You can access DebugDB through http://XXX.XXX.XXX.XXX:8080/index.html
日志中的网址即为 DebugDB 运行时的界面首页,另外,你也可以通过 await DebugDB.getDebugDBAddress() 直接获取到 DebugDB 的运行地址。
当应用程序处于运行状态时,你可以在浏览器中输入上述地址直接访问服务器,如果你希望手动开启和关闭服务器,你可以通过 await DebugDB.start() 和 await DebugDB.stop() 直接开启和关闭服务器。
使用 debug-db 时需要关注的点:
- 真机和使用浏览器的设备需要处于同一个网络环境 (Wifi 或 LAN)
- 目前DevEco Studio 中集成的 HarmonyOS 模拟器暂不支持联网,若应用在模拟器启动则无法在外部设备的浏览器中直接访问 Debug 服务器。
以下是 debug-db 的使用效果
RdbStore
Preferences
KVStore
你可以在浏览器直接观察和操作HarmonyOS的数据库!~~
关于 debug-db 的其他说明
服务端
本项目使用的服务端为开源库 polka。
相关权限
由于需要通过浏览器直接访问服务器获取数据库信息,因此 debug-db 使用了以下权限:
"requestPermission":[{
"name": "ohos.permission.INTERNET"
},{
"name": "ohos.permission.GET_WIFI_INFO"
},{
"name": "ohos.permission.GET_NETWORK_INFO"
}]
如果你觉得 HarmonyOS Debug Database (debug-db) 有用,可以在 gitee.com/ohadss/debu… 了解更详细的使用方法,欢迎 star 和提出任何的 issue ~~~