HarmonyOS xts如何编译调试模式的hap ?

问题描述

需要使用lldb对xts的hap进行调试,当前期望在使用aa test命令拉起应用时使用-D参数等待lldb连接。
当前使用-D参数拉起命令提示如下:

error: failed to start user test.  
error: not supported in non-app-provision mode.
阅读 1.8k
avatarAI BotBETA

解决方案步骤:

  1. 开启调试模式签名

    // 在模块的build-profile.json5中增加debug签名配置
    "signingConfigs": [{
      "name": "debug",
      "provisionProfile": "./signature/debug.p7b", // 调试用证书
      "certificationPath": "./signature/debug.crt"
    }]
  2. 强制指定debug编译类型

    // 在测试模块的build-profile.json5中
    "buildTypes": {
      "debug": {
     "compileType": "debug",
     "runtimeArgs": ["-D"] // 强制启用调试参数
      }
    }
  3. 使用完整调试命令

    # 需要指定测试类型和调试参数组合
    aa test -p your.bundle.name -t unittest -D --timeout 300

关键原理:
XTS测试默认使用release provisioning模式,需要通过以下方式强制开启调试:

  1. 使用debug签名证书(非预置证书)
  2. 在build.gradle中显式声明debug编译类型
  3. 部分设备需在设置中开启"Wait for debugger"选项

验证方式:
观察日志中出现Waiting for debugger on port 50050提示即表示调试模式激活成功,此时可通过lldb连接调试会话

1 个回答

解决方案
xts包与应用包无区别,编译调试包可使用IDE进行编译。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进