快速修復(fù)命令行調(diào)試開發(fā)指導(dǎo)

2024-01-25 11:57 更新

當(dāng)前階段,HarmonyOS為開發(fā)者提供了命令行的調(diào)試開發(fā)工具可供使用。比如,包名為com.ohos.quickfix的示例應(yīng)用,版本號為1000000。該應(yīng)用的當(dāng)前版本運(yùn)行中有某問題需要修復(fù),此時,開發(fā)者可參考如下指導(dǎo)使用快速修復(fù)能力解決應(yīng)用問題。

編寫配置文件patch.json

目前DevEco Studio中還不支持patch.json的配置,因此開發(fā)者可根據(jù)項目需要編寫好該文件后,放到的項目任意目錄,方便后續(xù)打包工具能夠找到該文件即可。在本地新建一個patch.json文件,配置編寫示例如下:

  1. {
  2. "app" : {
  3. "bundleName" : "com.ohos.quickfix",
  4. "versionCode" : 1000000, // 應(yīng)用版本號
  5. "versionName" : "1.0.0.1",
  6. "patchVersionCode" : 1000000, // 補(bǔ)丁版本號
  7. "patchVersionName" : "1.0.0.1"
  8. },
  9. "module" : {
  10. "name" : "entry",
  11. "type" : "patch",
  12. "deviceTypes" : [
  13. "default",
  14. "tablet"
  15. ],
  16. "originalModuleHash" : "11223344556677889900" // 待修復(fù)hap包的sha256值,可采用SHA256生成器自行生成
  17. }
  18. }

生成快速修復(fù)文件

快速修復(fù)TS文件的代碼

  • 在DevEco Studio中修改TS文件后,編譯HAP,可以在工程目錄下找到對應(yīng)的abc文件,如build\default\cache\default\LegacyCompileETS\jsbundle\temporary\pages\index.abc。

快速修復(fù)C++中的代碼

  • 在DevEco Studio中編譯原C++的代碼生成.so文件;修復(fù)原C++的代碼,編譯生成新的.so文件??梢栽诠こ棠夸浿姓业皆搒o,如build\default\intermediates\libs\default\arm64-v8a\libentry.so。
  • 在本地HarmonyOS SDK路徑的toolchains文件夾下查看diff.exe。通過該工具,基于新.so文件和舊的.so文件,生成.so的快速修復(fù)文件,命令如下:
    1. $ diff.exe -s Example.z.so -d Example.z.so -p Example.z.so.diff

    命令行參數(shù)含義:

  • -s:舊so的路徑
  • -d:新so的路徑
  • -p:生成的差分文件的路徑

生成.hqf的快速修復(fù)包

基于上述的patch.json、.abc快速修復(fù)文件和.so快速修復(fù)文件,可以通過本地HarmonyOS SDK路徑的toolchains文件夾下的app_packing_tool.jar生成.hqf包,執(zhí)行打包命令如下:

  1. $ java -jar app_packing_tool.jar --mode hqf --json-path patch.json --lib-path libs --ets-patch patchs --out-path entry-default-unsigned.hqf --force true

命令行參數(shù)介紹:

命令

說明

備注

mode

模式

必選

json-path

patch.json路徑

必選

lib-path

.so快速修復(fù)文件路徑,該路徑可參考快速修復(fù)包結(jié)構(gòu)

可選

ets-path

.abc快速修復(fù)文件路徑

可選

快速修復(fù)包的簽名

簽名與hap簽名相同,將上述生成的entry-default-unsigned.hqf包,通過簽名工具進(jìn)行簽名。可以使用本地HarmonyOS SDK路徑的toolchains文件夾下的hap-sign-tool.jar,命令如下:

  1. $ java -jar hap-sign-tool.jar sign-app -keyAlias "HarmonyOS Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "HarmonyOSApplication.pem" -profileFile "ohos_provision_release.p7b" -inFile "entry-default-unsigned.hqf" -keystoreFile "HarmonyOS.p12" -outFile "entry-signed-release.hqf" -keyPwd "123456" -keystorePwd "123456"

安裝快速修復(fù)包

將上述entry-signed-release.hqf包推送到設(shè)備上

  1. hdc.exe file send .\entry-signed-release.hqf /data/

在設(shè)備上通過下述命令行安裝補(bǔ)丁包

  1. $ bm quickfix -a -f /data/entry-signed-release.hqf

快速修復(fù)相關(guān)完整命令行參考如下:

  1. $ bm quickfix -h
  2. usage: bm quickfix <options>
  3. options list:
  4. -h, --help list available commands
  5. -q, --query indicates query quickfix, used with -b or --bundle-name
  6. -b, --bundle-name <bundle-name> query quickfix status and information by a specified bundle name
  7. -a, --apply indicates apply quickfix, used with -f or --file-path
  8. -f, --file-path <file-path> apply a quickfix file by a specified path
  9. -f, --file-path <file-path> <file-path> ... apply some quickfix files of one bundle
  10. -f, --file-path <bundle-direction> apply quickfix files by direction, under which are quickfix files
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號