HarmonyOS鸿蒙Next中内部测试时需要生成的应用描述文件中的sign值是根据哪些元素生成的

HarmonyOS鸿蒙Next中内部测试时需要生成的应用描述文件中的sign值是根据哪些元素生成的 我已经使用manifest-sign.bat对原aaa.json5生成了描述文件bbb.json5, 想了解下bbb.json5里的sign值是怎么计算出来的,或者是与aaa.json5文件里的哪些字段有关? 另外成功生成bbb.json里的sign值后,再手动修改bbb.json5里的其他字段值如packageUrl的值,不修改sign值, 会影响使用deeplink下载安装内部测试应用吗?

5 回复

开发者您好,内部测试时生成的应用描述文件的sign值和应用的基本信息字段有关,比如bundleName等字段,如果只是修改应用描述文件的packageUrl字段的值,不修改sign值,不会影响内部测试应用的下载和安装。建议签名完成后尽量不要修改配置文件,如必须修改,则修改完之后重新签名。

更多关于HarmonyOS鸿蒙Next中内部测试时需要生成的应用描述文件中的sign值是根据哪些元素生成的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢您的指导和建议, 实际情况还是会存在生成sign之前开发人员不确定具体的packageUrl, 因为包的存放路径会由产品管理人员决定和修改,而他们不会生成签名。

尊敬的开发者,您好!您的问题已受理,请您耐心等待,感谢您的理解与支持!

HarmonyOS Next应用描述文件中的sign值基于应用包名、版本号、开发者证书指纹、应用权限列表等元素,通过SHA-256等哈希算法生成,用于验证应用完整性和来源。

在HarmonyOS Next中,应用描述文件(.json5)中的sign值是一个基于文件内容生成的数字签名,用于确保文件的完整性和来源真实性。其生成主要依赖于以下元素:

  1. 源文件内容sign值是通过对整个aaa.json5文件的内容(不包括最终的sign字段本身)进行特定算法计算得出的。它本质上是文件内容的哈希摘要,并使用了开发者的私钥进行签名。因此,aaa.json5中的任何字段(如appNamebundleNameversionName等)发生改变,都会导致计算出的sign值不同。

  2. 签名密钥:生成过程会使用与您开发者账户或项目关联的私钥进行签名。这确保了该描述文件只能由您或您的团队生成,防止篡改。

关于您提到的第二个问题:手动修改bbb.json5中的其他字段(如packageUrl)而不更新sign值,将导致DeepLink下载安装失败。

原因如下:

  • 当设备或测试平台通过DeepLink获取到bbb.json5文件后,系统会使用对应的公钥验证其sign值。
  • 验证过程会重新计算当前文件内容(不包括sign字段)的哈希值,并与用公钥解密sign字段得到的结果进行比对。
  • 由于您修改了packageUrl等内容,重新计算出的哈希值将与签名时记录的原始值不匹配,导致验证失败
  • 验证失败后,系统会认为该描述文件已被篡改或无效,从而拒绝执行后续的下载和安装流程。

总结: sign值是整个描述文件内容的“数字指纹”。任何对文件内容的修改,都必须重新运行manifest-sign.bat(或等效命令)来生成新的、与之匹配的sign值,否则文件将无法通过验证,内部测试流程也会中断。

回到顶部