目录

HarmonyOS应用打包或上传时报错签名验证失败与Invalid Profile的排查与解决方案

问题现象

背景知识

发布应用:完成HarmonyOS应用开发、调试与测试后,开发者便可以在HarmonyOS 开发者中心正式提交应用上架申请。发布应用涉及申请发布证书、申请发布Profile和正式发布HarmonyOS应用三大步骤,证书和Profile是可能造成上述问题现象的原因之一。

问题定位

场景一的定位过程:

场景二的定位过程:

分析结论

场景一:

场景二:

修改建议

场景一:

场景二:

常见FAQ

Q:为什么使用的发布证书与发布Profile构建出来的包不能在手机上直接运行?

A:若需要本地安装到手机上,请使用调试证书签名;若需要上架应用、上传APP的时候,才需要使用发布证书。

Q:基于HarmonyOS Next版本,使用同一个CSR签名文件在华为平台配置发布证书和调试证书,生产出两个对应的.p7b证书,两个文件大小不一。如果在真机上获取APPID是否一致?

A:调试证书和发布证书生成的Profile文件,里面的应用信息是一样的,APPID是一致的,目前只有调试Profile有udid,发布Profile没有。

Q:证书与Profile确认都为发布类型,但为什么运行后还是报错?

A:发布证书以及发布Profile,应该Build > Build Hap(s)/APP(s) > Build APP(s)包用于上架应用市场,不能点运行直接本地跑,否则会报错。

Q:应用打包成APP时,里面的Hap包为何没有签名?

A:上架的时候应用市场会拆包重签名的,APP是上架用的,对APP签名就可以上架。应用市场校验完APP签名之后,会解压获取所有的Hap,再对Hap签名,所以不用在IDE里签名。

Q:IDE工具可正常运行,为什么使用验签工具报错: Failed to load keystore when sign with exception: keystore password was incorrect?

A:配置的storePassword和keyPassword非密码原文,需使用原文密码。

Q:签名密钥库文件口令错误,打包签名提示:Init keystore failed: keystore password was incorrect错误。

A:使用正确的密钥库文件口令,密钥库文件口令验证方式如下:

打开DevEco Studio Terminal窗口,使用keytool命令行工具验证密钥库文件口令,示例:

keytool -list -keystore ${Store file} -storepass ${Store password}。

Q:在开发工具上直接上传软件包时报错Invalid Profile,重新申请证书后仍未解决,该如何处理?

A:不要使用自动签名,需使用手动签名。手动发布签名流程如下:

  1. 准备证书请求文件和密钥,参考生成密钥和证书请求文件。
  2. 申请发布证书,参考申请发布证书。
  3. 配置签名信息,参考配置签名信息。

Q:调试证书应用于哪里?过期后会有什么影响?如何重新申请调试证书?

A:调试证书用于本地调试和真机运行应用时对应用进行签名。调试证书过期后,将无法使用该证书对应用进行签名,导致无法在真机上安装和调试应用。需要重新生成密钥和证书请求文件,参考生成密钥和证书请求文件,然后重新申请调试证书。

Q:已配置发布证书和发布Profile,但构建时只生成未签名的安装包,如何解决?

A:排查工程级build-profile.json5文件中products字段下buildOption的debuggable字段,以及模块级build-profile.json5文件中buildOption的debuggable字段,确保debuggable未设置为true。

当debuggable为true时,构建出的包为可调试状态,不会使用发布证书签名。

详细排查步骤参考使用发布证书打Release包未成功。