注意:为了保证通用性和准确性,本次解包、打包和签名等工具均使用鸿蒙官方提供的工具。 app_unpacking_tool.jar是鸿蒙提供的解包工具,通常位于 SDK 的 基本命令格式: 示例参考: 参数说明: 上述列出的只是常用参数,如果需要更详细的参数请参考鸿蒙官网文档。 app_packing_tool.jar是鸿蒙提供的打包工具,通常位于 SDK 的 使用 一般来说通过核心配置文件可以判断当前hap包是FA模型还是Stage模型,比如FA模型的核心配置文件一般命名为 Stage模型的核心配置文件一般命名为 基本命令格式: 示例参考: 基本命令格式: 上述列出的只是常用参数,打包工具还支持更多参数,例如 例如:下列文件夹的内容为hap解包后的结构,那么打包的时候需要用到 获取签名信息: 参考华为鸿蒙官方文档去申请创建证书等,链接为:https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-releasecert-0000001946273961 基本命令格式: 示例参考: 参数说明: 上述列出的只是常用参数,如果需要更详细的参数请参考鸿蒙官网文档。 参考命令: 上述流程是hap的完整操作流程,如果需要对so库进行加固,需要在hap解包的流程后加上so库加固流程。 流程变为:hap解包-》对so库进行加固-》hap打包-》hap签名-》hap安装。 命令介绍: 加固命令,参考如下: 注意:hap解包
介绍
toolchains\lib
目录下;命令
java -jar app_unpacking_tool.jar --mode hap --hap-path ./myapp.hap --out-path ./myapp_unpacked --force true
"F:\Program Files\Huawei\DevEco Studio\jbr\bin\java.exe" -jar "D:\Desktop\apks_sign\hongmeng-jinyue\app_unpacking_tool.jar" --mode hap --hap-path entry-default-signed.hap --out-path entry-default-signed --force true
--mode
hap
。--hap-path
--out-path
--force
true
,当目标输出目录已存在时,会强制覆盖。默认值为 false
。hap打包
介绍
toolchains\lib
目录下;app_packing_tool.jar
来打包 HAP 包时,命令参数会根据 HAP 包所使用的Stage模型还是 FA模型有所不同。config.json
;module.json5
。模型
stage模型
java -jar app_packing_tool.jar --mode hap --json-path <module.json路径> --resources-path <资源路径> --ets-path <ets代码路径> --out-path <输出HAP路径> [其他参数] --force true
"F:\Program Files\Huawei\DevEco Studio\jbr\bin\java.exe" -jar "D:\Desktop\apks_sign\hongmeng-jinyue\app_packing_tool.jar" --mode hap --json-path "D:\Desktop\Android_so\entry-default-signed\module.json" --resources-path "D:\Desktop\Android_so\entry-default-signed\resources" --ets-path "D:\Desktop\Android_so\entry-default-signed\ets" --lib-path "D:\Desktop\Android_so\entry-default-signed\libs" --index-path "D:\Desktop\Android_so\entry-default-signed\resources.index" --pack-info-path "D:\Desktop\Android_so\entry-default-signed\pack.info" --out-path repacked.hap --force true
FA模型
java -jar app_packing_tool.jar --mode hap --json-path <config.json路径> --dex-path <dex路径> --lib-path <native库路径> --resources-path <资源路径> --out-path <输出HAP路径> [其他参数] --force true
命令参数说明
--mode
hap
。--json-path
module.json
,FA 模型为 config.json
。--resources-path
--ets-path
仅Stage模型生效 --dex-path
FA模型常用 --lib-path
--out-path
.hap
结尾。--force
true
,当输出 HAP 文件已存在时,会强制覆盖。默认值为 false
。--profile-path
、--index-path
、--pack-info-path
、--rpcid-path
、--js-path
等,实际使用时,请务必根据你解包后的具体文件结构和内容,参考官方文档或工具帮助信息来选择和调整参数。--ets-path、--lib-path、--resources-path、--json-path、--pack-info-path、--index-path
参数,所以具体指定什么参数需要根据解包后的文件才能确定。hap签名
java -jar hap-sign-tool.jar sign-app -keyAlias <别名> -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile <cer证书路径> -profileFile <p7b文件路径> -inFile <hap包路径> -keystoreFile <p12文件路径> -outFile <重签名后的hap包路径> -keyPwd <别名密码> -keystorePwd <p12密码>
"F:\Program Files\Huawei\DevEco Studio\jbr\bin\java.exe" -jar "D:\Desktop\apks_sign\hongmeng-jinyue\hap-sign-tool.jar" sign-app -keyAlias "sensetest" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "D:\Desktop\apks_sign\hongmeng-jinyue\Debug.cer" -profileFile "D:\Desktop\apks_sign\hongmeng-jinyue\jinyueDebug.p7b" -inFile "D:\Desktop\Android_so\entry-default-signed.hap" -keystoreFile "D:\Desktop\apks_sign\hongmeng-jinyue\debug.p12" -outFile "new-hap-signed.hap" -keyPwd "Sense1!123" -keystorePwd "Sense1!123"
-keyAlias
"sensetest"
-signAlg
"SHA256withECDSA"
-mode
"localSign"
localSign
模式表示使用本地的密钥库文件(.p12)进行签名操作-appCertFile
"Debug.cer"
-profileFile
"jinyueDebug.p7b"
-inFile
"entry-default-signed.hap"
-keystoreFile
"debug.p12"
-outFile
"new-hap-signed.hap"
-keyPwd
"Sense1!123"
-keyAlias
指定的那个特定密钥对的密码。-keystorePwd
"Sense1!123"
.p12
密钥库文件的密码hap安装
hdc install new-hap-signed.hap
so库加固
--imp-protect=
--mem-check=
--detect-dbg=
--strip-dbginfo=
--pack=0
-m
-v
-o
"C:\Program Files\senseshield\Virbox Protector 3\bin\virboxprotector_con.exe" "libc++_shared.so" -m "_ZSt14get_unexpected;_ZSt15get_new_handler" --imp-protect=1 --mem-check=1 --detect-dbg=1 --strip-dbginfo=1 --pack=0 -o protected\libc++_shared.so
“
打包hap时,需提前将将加固后的so库替换到原so文件位置处。
👇扫码进群,一起畅聊技术,共享前沿资讯!

👇点击关注,🌟星标深盾,了解更多精彩内容!