什么是 HarmonyOS Debug Database?

HarmonyOS Debug Database 是一款功能强大的鸿蒙应用数据库调试工具,方便开发人员在应用程序 Debug 版本下快速调试关系型数据库 (RdbStore)、用户首选项 (Preferences)、键值数据库 (KVStore)

在这里插入图片描述

你可以点击下面的链接直接使用和获取 HarmonyOS Debug Database:

OpenHarmonyhttps://ohpm.openharmony.cn/#/cn/detail/@hadss%2Fdebug-db

giteehttps://gitee.com/ohadss/debug-database

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 (包括加密KV数据库,需手动配置)
  • 查看指定 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.1"
}

简单使用

如果你只是想应用 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 中查看)

进阶使用

当你不希望在应用的 Release 包中加入 debug-db 的冗余代码,或者期望自定义服务端的启动端口时,可以参考进阶使用:

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、在应用中导入 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: 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() 直接开启和关闭服务。

使用 debug-db 时需要关注的点:
  • 真机和使用浏览器的设备需要处于同一个网络环境 (Wifi 或 LAN)
  • 目前DevEco Studio 中集成的 HarmonyOS 模拟器暂不支持联网,若应用在模拟器启动则无法在外部设备的浏览器中直接访问 Debug 服务。

以下是 debug-db 的使用效果

RdbStore
在这里插入图片描述
在这里插入图片描述
Preferences
在这里插入图片描述

KVStore
在这里插入图片描述

你可以在浏览器直接观察和操作HarmonyOS的数据库!🌏~~

常见错误

1.启动 Debug 服务后,访问浏览器无法显示页面

  • 查看浏览器的设备与移动设备不处于同一个局域网中
  • 配置的启动端口已经占用

2.查询加密KV数据库时出现红体 “Query Execution Failed”

  • 未在启动时配置加密KV数据库名

3. DevEco 没有输出服务端地址信息

  • 应用启动模式为 Release 模式

关于 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) 有用,可以在 https://gitee.com/ohadss/debug-database 了解更详细的使用方法,欢迎 star ⭐⭐⭐和提出任何的 issue ✌️✌️✌️~~~

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐