文档管理中心

增量调试

对于大型应用来说,每次修改代码后需要重新构建、推包、安装,整个流程耗时较长。针对该场景,在DevEco Studio和命令行场景中分别提供增量运行调试功能,支持开发者在真机上调试应用时,修改代码后,会识别出代码差异,构建增量包,增量运行调试时只推送增量包,减少大型应用调试推包时间。

说明

C++代码增量调试支持API Version 11及以上版本Stage模型的工程;ArkTS代码增量调试仅支持API Version 12及以上版本Stage模型工程的资源文件修改。

使用DevEco Studio增量调试

调试C++代码

  1. 在工具栏中,选择调试的设备,并单击Run或Debug 启动工程。
  2. 在修改完代码后,点击Apply Changes推送增量包安装至设备。

    点击Apply Changes按钮后,DevEco Studio启动构建的增量构建任务,构建出增量包hqf。增量包构建完成后,将推送安装至设备。

    说明

    当前增量运行Apply Changes功能,暂不支持新建和删除代码文件,暂不支持在代码中修改装饰器相关,暂不支持在代码文件中使用import新增引用文件。

调试resfile资源

  1. 在工具栏中,选择调试的设备,并单击Run或Debug 启动工程。
  2. 在工程的资源resources文件目录下的resfile目录下,新增或者修改资源文件。

  3. 点击Apply Changes推送增量包安装至设备。

    点击Apply Changes按钮后,DevEco Studio启动构建的增量构建任务,构建出增量包hqf。增量包构建完成后,将推送安装至设备。

使用命令行增量调试(C++代码)

通过hvigorw构建hqf包

  1. 首先确认应用运行所需的HAP/HSP模块,全量编译。

    根据运行所需的模块,及模块的product、target,编写命令行执行HAP/HSP编译任务,如entry模块依赖HSP模块library:
    收起
    自动换行
    深色代码主题
    复制
    1. hvigorw --mode module -p module=entry@default,library@default -p product=default assembleHap assembleHsp --info --no-daemon

    关于命令行的使用指导请参考hvigorw。

  2. 执行hdc命令安装HAP、HSP,关于hdc工具的使用指导请参考hdc。

    收起
    自动换行
    深色代码主题
    复制
    1. $ hdc shell mkdir data/local/tmp/99c24fdc44694c05be12491d0a48e139
    2. $ hdc file send library-default-signed.hsp "data/local/tmp/99c24fdc44694c05be12491d0a48e139"
    3. $ hdc file send entry-default-signed.hap "data/local/tmp/99c24fdc44694c05be12491d0a48e139"
    4. $ hdc shell bm install -p "data/local/tmp/99c24fdc44694c05be12491d0a48e139"

  3. 修改代码后,执行hqf打包命令,执行完成后可在entry和library模块的输出目录build/default/outputs/default中,找到对应的产物entry-default-signed.hqf和library-default-signed.hqf。

    收起
    自动换行
    深色代码主题
    复制
    1. hvigorw --mode module -p module=entry@default,library@default -p product=default assembleDevHqf --info --no-daemon

  4. 执行hdc命令安装hqf。

    收起
    自动换行
    深色代码主题
    复制
    1. $ hdc shell mkdir data/local/tmp/3b7d97cdf4de41c4aecc465ff5069708
    2. $ hdc file send library-default-signed.hqf "data/local/tmp/3b7d97cdf4de41c4aecc465ff5069708"
    3. $ hdc file send entry-default-signed.hqf "data/local/tmp/3b7d97cdf4de41c4aecc465ff5069708"
    4. $ bm quickfix -a -f "data/local/tmp/3b7d97cdf4de41c4aecc465ff5069708"

通过SDK工具构建hqf包

  1. 开发者全量编译应用并安装到设备。

    收起
    自动换行
    深色代码主题
    复制
    1. hdc bm install ***.hap (pc侧HAP/HSP路径)
    2. hdc shell bm install -p hap_path (设备侧安装包目录)

  2. 开发者通过独立的构建流程,识别出希望构建增量hqf包的so,汇总到某一目录如libs。
  3. 提前准备与已安装应用一致的签名文件。

    可以从工程的build-profile.json5文件中获取到对应的签名文件。

  4. 准备patch.json文件,内容参考。

    收起
    自动换行
    深色代码主题
    复制
    1. {
    2. "app" : {
    3. "bundleName" : "com.ohos.quickfix",
    4. "versionCode" : 1000000, // 应用版本号
    5. "versionName" : "1.0.0.1",
    6. "patchVersionCode" : 1000000, // 补丁版本号
    7. "patchVersionName" : "1.0.0.1"
    8. },
    9. "module" : {
    10. "name" : "entry",
    11. "type" : "patch",
    12. "deviceTypes" : [
    13. "default",
    14. "tablet"
    15. ],
    16. "originalModuleHash" : "" // 待修复HAP包的sha256值,置空即可
    17. }
    18. }

  5. 通过调用hqf打包工具进行打包。

    收起
    自动换行
    深色代码主题
    复制
    1. java -jar app_packing_tool.jar --mode hqf --json-path patch.json --lib-path libs --out-path entry-default-unsigned.hqf --force true

    --mode:打包模式hqf,必填。

    --json-path:指定增量包信息patch.json,必选,参考步骤4。

    --lib-path:指定希望构建打包的so目录,参考步骤2。

    --out-path:指定输出hqf包路径。

  6. 调用签名工具进行包及代码签名。

    收起
    自动换行
    深色代码主题
    复制
    1. java -jar hap-sign-tool.jar sign-app -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "ohos_provision_release.p7b" -inFile "entry-default-unsigned.hqf" -keystoreFile "OpenHarmony.p12" -outFile "entry-signed-release.hqf" -keyPwd "123456" -keystorePwd "123456" -signCode 1

    关于该命令中需要修改的参数说明如下,其余参数不需要修改:

    • keyAlias:密钥别名。
    • appCertFile:申请的调试证书文件,格式为.cer。
    • profileFile:申请的调试Profile文件,格式为.p7b。
    • inFile:通过Hvigor打包生成的未携带签名信息的HAP。
    • keystoreFile:密钥库文件,格式为.p12。
    • outFile:经过签名后生成的携带签名信息的HAP。
    • keyPwd:密钥口令。
    • keystorePwd:密钥库口令。
    • signCode:是否开启代码签名,缺省为开启。1表示开启,0表示不开启。从NEXT Beta1版本开始,需开启代码签名,否则将导致构建出的包无法安装到设备上。

  7. 安装增量hqf包。

    • 单包安装:
      收起
      自动换行
      深色代码主题
      复制
      1. bm quickfix -a -f /data/entry-signed-release.hqf
    • 多包安装:
      收起
      自动换行
      深色代码主题
      复制
      1. bm quickfix -f, --file-path <bundle-direction>

常见问题

在其他的开发工具中修改打包so库文件,无法使用DevEco Studio的增量调试功能

问题现象

如果开发者在其他的开发工具中修改打包so库文件,在使用DevEco Studio 4.1 Canary2版本的增量调试功能时,出现无法使用增量调试功能的现象。

解决措施

导致这个问题的原因是在DevEco Studio 4.1 Canary2版本上,对于超过16KB的Native文件,在命中其中的断点后,LLDB调试器会默认持有文件句柄,导致调试过程中无法修改保存该文件。

开发者可通过以下两种方式处理:

  • 方式一:使用以下LLDB命令关闭LLDB调试器源码缓存机制。执行如下命令后,LLDB调试器将不再持有文件句柄。
    收起
    自动换行
    深色代码主题
    复制
    1. settings set use-source-cache false
  • 方式二:建议开发者升级至DevEco Studio 5.0.1 Release版本。
在 指南 中进行搜索
请输入您想要搜索的关键词