注意:为了保证通用性和准确性,本次解包、打包和签名等工具均使用鸿蒙官方提供的工具。 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--modehap。--hap-path--out-path--forcetrue,当目标输出目录已存在时,会强制覆盖。默认值为 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 trueFA模型
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命令参数说明
--modehap。--json-pathmodule.json,FA 模型为 config.json。--resources-path--ets-path仅Stage模型生效 --dex-pathFA模型常用 --lib-path--out-path.hap 结尾。--forcetrue,当输出 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.hapso库加固
--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文件位置处。
👇扫码进群,一起畅聊技术,共享前沿资讯!

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