HarmonyOS应用数据库调试工具 HarmonyOS Debug Database (debug-db) 原创
HarmonyOS Debug Database 是一款功能强大的鸿蒙应用数据库调试工具,方便开发人员在应用程序 Debug 版本下快速调试关系型数据库 (RdbStore)、用户首选项 (Preferences)、键值数据库 (KVStore)
你可以点击下面的链接直接使用和获取 HarmonyOS Debug Database:
OpenHarmony:https://ohpm.openharmony.cn/#/cn/detail/@hadss%2Fdebug-db
gitee:https://gitee.com/ohadss/debug-database
与 Android-Debug-Database 相似, HarmonyOS Debug Database
可使开发者以非常简单的方式在浏览器中直接查看和操作三种 HarmonyOS 数据库,提升调试效率。
功能特性
以下所有的功能都可以在不需要对设备进行 Root 操作(无需Root设备)的情况下使用:
- 查看所有的 RdbStore 数据库 (包括加密数据库)
- 查看指定 RdbStore 数据库中的所有表
- 查看 RdbStore 数据库中指定表的所有数据
- 在指定的 RdbStore 数据库上运行任何SQL查询来创建、删除数据库,或增删改查数据库数据
- 直接对 RdbStore 数据进行增删改查
- 下载指定 RdbStore 对应的数据库文件
- 查看所有的 Preferences
- 查看指定 Preferences中所有首选项数据
- 直接对 Preferences 数据进行增删改查
- 查看所有的 KVStore (包括加密KV数据库,需手动配置)
- 查看指定 KVStore 中所有键值对数据
- 直接对 KVStore 数据进行增删改查
使用说明
下载安装
ohpm install @hadss/debug-db
简单使用
import {DebugDB} from '@hadss/debug-db';
...
const context = getContext(this) as common.UIAbilityContext;
DebugDB.initialize(context); // 在浏览器中访问 http://XXX.XXX.XXX.XXX:8080/index.html (详细地址请在 Log 中查看)
进阶使用
1、开启条件编译
在项目打包时通常不希望将 Debug 版本使用的三方库打包进 Release 版本的 HAP 包中,因此需要在项目build-profile.json5配置文件中加入条件编译参数,并设置:
"buildOption":{
"arkOptions":{
"branchElimination":true
}
}
关于应用编译选项的配置,详情可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-build-profile-V5
2、在应用中导入 DebugDB,设置 UIAbilityContext 及服务端运行的端口 ( 默认为 8080 ),依据需要配置加密的KV数据库名
下面为在应用中 ability 的 aboutToApper 阶段导入并启动 DebugDB 的一个完整示例。你也可以在应用程序的其他位置启动 DebugDB 服务:
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: 9090, encryptedKVStoreNames: ['MyEncryptedKVStore'] }); // context为必要参数,根据需要配置可选参数
})
}
}
其中,DebugDB相关启动参数以“对象”的形式配置。
在编译过程中,由于已开启了条件编译,编译器会对 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()
直接开启和关闭服务。
注意事项
- 真机和使用浏览器的设备需要处于同一个网络环境 (Wifi 或 LAN)
- 目前DevEco Studio 中集成的 HarmonyOS 模拟器暂不支持联网,若应用在模拟器启动则无法在外部设备的浏览器中直接访问 Debug 服务端。
DebugDB 界面
RdbStore
Preferences
KVStore
常见错误
1. 启动 Debug 服务后,访问浏览器无法显示页面
- 查看浏览器的设备与移动设备不处于同一个局域网中
- 所配置的启动端口已经占用
2. 查询加密KV数据库时出现红体 “Query Execution Failed”
- 未在启动时配置加密KV数据库名
3. DevEco 没有输出服务端地址信息
- 应用启动模式为 Release 模式
其他说明
服务端
本项目使用的服务端为开源库 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) 有用,可以在 https://gitee.com/ohadss/debug-database 了解更详细的使用方法,欢迎 star ⭐⭐⭐和提出任何的 issue ✌️✌️✌️~~~
值得推荐的工具
收藏了