在开发完成后,申请、下载证书及对应Profile,期望能打包并正式发布应用,在工具中单击Build > Build Hap(s)/APP(s) > Build APP(s) 后报错:
hvigor ERROR: Failed :entry:default@SignHap... hvigor ERROR: Tools execution failed. 08-22 18:07:18 ERROR - hap-sign-tool: error: Signature verify failed Detail: Please check the message from tools. hvigor ERROR: BUILD FAILED in 12 s 170 ms
本地java环境是jdk11,打包报错提示签名失败:
ERROR: Tools execution failed. 02-26 10:20:24 ERROR - hap-sign-tool: error: Init keystore failed: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available * Try the following: > The key store file does not exist, please check the key store file path. > Incorrect keystore password, please input the correct plaintext password. > The keystore was created by a newer JDK version, please use the same JDK version Detail: Please check the message from tools.
发布应用:完成HarmonyOS应用开发、调试与测试后,开发者便可以在HarmonyOS 开发者中心正式提交应用上架申请。发布应用涉及申请发布证书、申请发布Profile和正式发布HarmonyOS应用三大步骤,证书和Profile是可能造成上述问题现象的原因之一。
场景一:
场景二:
场景一:
场景二:
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:不要使用自动签名,需使用手动签名。手动发布签名流程如下:
Q:调试证书应用于哪里?过期后会有什么影响?如何重新申请调试证书?
A:调试证书用于本地调试和真机运行应用时对应用进行签名。调试证书过期后,将无法使用该证书对应用进行签名,导致无法在真机上安装和调试应用。需要重新生成密钥和证书请求文件,参考生成密钥和证书请求文件,然后重新申请调试证书。
Q:已配置发布证书和发布Profile,但构建时只生成未签名的安装包,如何解决?
A:排查工程级build-profile.json5文件中products字段下buildOption的debuggable字段,以及模块级build-profile.json5文件中buildOption的debuggable字段,确保debuggable未设置为true。
当debuggable为true时,构建出的包为可调试状态,不会使用发布证书签名。
详细排查步骤参考使用发布证书打Release包未成功。