HarmonyOS 鸿蒙Next 数据库可视化调试工具,支持rdbstore、preference、kvstore等类型

HarmonyOS 鸿蒙Next 数据库可视化调试工具,支持rdbstore、preference、kvstore等类型 TL;DR

开源库:[https://ohpm.openharmony.cn/#/cn/detail/@hadss%2Fdebug-db](https://ohpm.openharmony.cn/#/cn/detail/@hadss%2Fdebug-db)

可视化界面如下: HarmonyOS Debug Database (debug-db)

HarmonyOS Debug Database (debug-db)

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

Android-Debug-Database 相似, HarmonyOS Debug Database 可使开发者以非常简单的方式在浏览器中直接查看和操作三种 HarmonyOS 数据库,提升调试效率。

功能特性

以下所有的功能都可以在不需要对设备进行 Root 操作(无需Root设备)的情况下使用:

RdbStore

  • 查看指定UIAbilityContext以及ApplicationContext(APP__前缀)的所有RdbStore 数据库 (包括加密数据库)
  • 支持自定义路径,递归扫描对应context下的rdb目录
  • 查看指定 RdbStore 数据库中的所有表
  • 查看 RdbStore 数据库中指定表的所有数据
  • 在指定的 RdbStore 数据库上运行任何SQL查询来创建、删除数据库,或增删改查数据库数据
  • 直接对 RdbStore 数据进行增删改查
  • 下载指定 RdbStore 对应的数据库文件

KVStore

  • 查看指定UIAbilityContext以及ApplicationContext下所有的 KVStore (包括加密KV数据库),storeId要唯一
  • 查看指定 KVStore 中所有键值对数据
  • 直接对 KVStore 数据进行增删改查

Preferences

  • 查看指定UIAbilityContext以及ApplicationContext(APP__前缀)下所有的 Preferences
  • 查看指定 Preferences中所有首选项数据
  • 直接对 Preferences 数据进行增删改查

使用说明

下载安装

ohpm install [@hadss](/user/hadss)/debug-db

基础用法

import {DebugDB} from '[@hadss](/user/hadss)/debug-db';

...
const context = getContext(this) as common.UIAbilityContext;
DebugDB.initialize(context); // 在浏览器中访问 http://XXX.XXX.XXX.XXX:8080/index.html (详细地址请在 Log 中查看)

高级用法:只在debug包中集成debug-db,打release包时去掉相关代码和配置

详情请参考demo工程:debug-database

1. 在应用中导入DebugDB,设置UIAbilityContext(必选)及服务端运行的端口(可选,默认为8080)

下面为在应用中 ability 的 aboutToApper 阶段导入并启动 DebugDB 的一个完整示例。你也可以在应用程序的其他位置启动 DebugDB 服务:

import {common} from '@kit.AbilityKit';
import {DEBUG} from 'BuildProfile';

...
aboutToAppear(): void {
  if (DEBUG) {
    const context = getContext(this) as common.UIAbilityContext;
    const pkg = '[@hadss](/user/hadss)/debug-db';
    import(pkg).then(async (ns: ESObject) => {
      await ns.DebugDB.initialize(context, { port: 9090 });
    });
  }
}

2. 配置代码分支裁剪(条件编译)以及动态import变量表达式

在项目打包时通常不希望将 Debug 版本使用的三方库打包进 Release 版本的 HAP 包中,因此需要在模块级的 build-profile.json5 配置文件中加入条件编译参数,并设置:

"buildOption": {
  "arkOptions": {
    "branchElimination": true,
    "runtimeOnly": {
      "packages": [
        '[@hadss](/user/hadss)/debug-db'
      ],
    },
  }
}

参考文档:

3. 编写hvigor自定义插件,打release包前删除对debug-db的依赖

import { hapTasks, OhosPluginId } from '@ohos/hvigor-ohos-plugin';
import { hvigor } from '@ohos/hvigor';

const DebugPkg = '[@hadss](/user/hadss)/debug-db';

// 实现自定义插件
function debugPlugin(): HvigorPlugin {
  return {
    pluginId: 'debugPlugin',
    async apply(currentNode: HvigorNode): Promise<void> {
      clearDebugConfig(currentNode);
    }
  }
}

function clearDebugConfig(currentNode: HvigorNode) {
  const buildMode = hvigor.getParameter().getExtParam('buildMode');
  if (buildMode === 'release') {
    const hapContext = currentNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN);
    if (!hapContext) {
      return;
    }

    // 去掉动态import变量表达式对应的runtimeOnly配置
    const buildProfileOpt = hapContext.getBuildProfileOpt();
    let runtimeOnly = buildProfileOpt?.buildOption?.arkOptions?.runtimeOnly;
    if (runtimeOnly?.packages?.includes(DebugPkg)) {
      runtimeOnly.packages = runtimeOnly.packages.filter(pkg => pkg !== DebugPkg);
      console.log(`entry:debugPlugin, 打release包前删除build-profile.json5中${DebugPkg}相关配置`);
    }
    hapContext.setBuildProfileOpt(buildProfileOpt);

    // 删除entry对debug-db的依赖
    const dependenciesOpt = hapContext.getDependenciesOpt();
    delete dependenciesOpt[DebugPkg];
    console.log(`entry:debugPlugin, 打release包前删除${DebugPkg}调试用依赖包`);
    hapContext.setDependenciesOpt(dependenciesOpt);
  }
}

export default {
  system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
  plugins: [debugPlugin()]         /* Custom plugin to extend the functionality of Hvigor. */
}

参考文档:

4. 在浏览器中访问 DebugDB

当开发者启动应用程序后,应用后台会自动启动 DebugDB 服务,若成功启动,则可以在 DevEco Studio 的 Log 界面查看到以下日志:

You can access DebugDB through http://XXX.XXX.XXX.XXX:9090/index.html

日志中的网址即为 DebugDB 运行时的界面首页,另外,你也可以通过 await DebugDB.getDebugDBAddress() 直接获取到 DebugDB 的运行地址。

当应用程序处于运行状态时,你可以在浏览器中输入上述地址直接访问服务端,如果你希望手动开启和关闭服务,你可以通过 DebugDB.start()DebugDB.stop() 直接开启和关闭服务。

DebugDB 界面

DebugDB界面

注意事项

  • 真机和使用浏览器的设备需要处于同一个网络环境 (Wifi 或 LAN)
  • 目前DevEco Studio 中集成的 HarmonyOS 模拟器暂不支持联网,若应用在模拟器启动则无法在外部设备的浏览器中直接访问 Debug 服务端。
  • DebugDB.initialize 方法默认会启动 server,另外 DebugDB 的 start 方法可能出现不稳定的情况,如果 stop 后 start 失败,建议重启应用。

约束与限制

在下述版本通过验证: DevEco Studio NEXT Developer Beta6 (5.0.3.706) --SDK:API 12 (5.0.0.61)


更多关于HarmonyOS 鸿蒙Next 数据库可视化调试工具,支持rdbstore、preference、kvstore等类型的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 数据库可视化调试工具,支持rdbstore、preference、kvstore等类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 数据库可视化调试工具支持对rdbstore、preference、kvstore等多种类型数据库进行可视化调试。以下是对该工具功能的简要说明:

该工具集成了对鸿蒙系统中多种数据库类型的支持,使得开发者可以在图形化界面中直观地查看、修改和分析数据库内容。对于rdbstore,开发者可以浏览数据库表结构,查看和编辑表中的数据记录;对于preference和kvstore,开发者可以方便地查看键值对存储的数据。

通过该工具,开发者可以更加高效地定位和解决数据库相关的问题,提高开发效率。同时,可视化调试工具也提供了数据导出等功能,方便开发者将数据库内容导出到本地进行进一步分析。

使用该工具时,开发者需要确保鸿蒙系统设备已经正确连接,并且已经开启了相应的调试权限。此外,工具版本需要与鸿蒙系统版本匹配,以确保功能的正常使用。

需要注意的是,该工具主要面向鸿蒙系统的开发者,对于普通用户来说,可能并不需要直接使用该工具。如果开发者在使用过程中遇到问题,建议仔细阅读工具的使用手册或相关文档,以获取详细的操作指南和问题解决方案。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部