DevEco Studio5.0.5开发OpenHarmony应用,构建提示签名错误

DevEco Studio5.0.5开发OpenHarmony应用,构建提示签名错误 才入手鸿蒙开发,构建应用时出错,请各位帮忙看下问题,谢谢!!

开发工具:DevEco Studio5.0.5,目标机:OpenHarmony4.1.10

已修改部分:根据官方教程创建一个hello world项目,按照官方要求修改项目级build-profile.json5

"targetSdkVersion": 11,
"compatibleSdkVersion": 11,
"compileSdkVersion": 11,
"runtimeOS": "OpenHarmony",

在文件->设置->OpenHarmonySDK设置中已经下载API V11全部内容。

使用构建->生成私钥和证书请求文件->设置密码和别名

在项目级build-profile.json5修改

"signingConfigs": [
  {
    "name": "DevSign",  // 签名配置名称,供后续引用
    "type": "OpenHarmony",  // 签名类型为OpenHarmony
    "material": {
      "certpath": "key32/key32.cer",  // 证书文件路径(相对项目根目录)
      "keyAlias": "debug_key32",  // 与步骤1中的Key Alias一致
      "keyPassword": "first_hello012345678901234567890",  // 与步骤1中的密码一致
      "profile": "key32/empty_profile.p7b",  // 空profile文件路径
      "signAlg": "SHA256withECDSA",  // 签名算法(固定值)
      "storeFile": "key32/key32.p12",  // 密钥库文件路径
      "storePassword": "first_hello012345678901234567890"  // 与步骤1中的密码一致
    }
  }
],

其中:empty_profile.p7b是空文件,key32.cer文件是用keytool生成的

问题描述:

1、密码设置成9位数字+字母+特殊字符,系统提示

ERROR: Invalid data. Detail: Make sure the values of storePassword and keyPassword in build-profile.json5 contain at least 32 characters.

2、密码设置成32位数字+字母+特殊字符

Detail: Signing failed. Reconfigure the signature or clear the E:\arkts_code\first_hello\key32 folder and perform signing again.

3、密码设置成35位数字+字母+特殊字符

ERROR: Invalid password length. Detail: Verify the settings of storePassword and keyPassword in build-profile.json5.

使用HarmonyOS类型就可以生成hap。

望各位帮忙看下!!!多谢了!!!


7 回复

背景知识:

楼主你使用签名的时候需要再签名的选项卡中进行输入你的密码。因为最终在配置文件中生成的是一个加密的字符串,所以你需要再配置签名选项卡中进行填写密码。

问题解决:

方式一:使用自己的签名文件,在次此处输入你的密码

cke_17104.png

方式二:勾选3位置,让其自动签名

cke_545.png


排查思路: 1.楼主先尝试用模拟器能不能跑

2.再确认自动签名真机是否能跑

3.按照签名信息对照重新检查签名步骤是否怎加真机udid

参考文档:配置签名-开发准备-Screen Time Guard Kit(屏幕时间守护服务)-应用服务 - 华为HarmonyOS开发者

第一步:通过DevEco Studio菜单栏选择 Build > Generate Key and CSR,生成.p12和.csr文件,将csr文件上传至AGC后台,再下载官方生成的.cer和.p7b文件;

第二步:删除现有key32文件夹,并在build-profile.json5中调整配置:

"material": {

  "certpath": "新生成的cer文件路径",

  "profile": "从AGC下载的p7b文件路径",

  "storeFile": "生成的p12文件路径",

  "keyAlias": "与生成密钥时一致的别名",

  "storePassword": "32位明文密码",

  "keyPassword": "同上"

}

第三部:执行菜单栏 Build > Clean Project;删除项目根目录下的build文件夹

确定是签名问题吗,在项目级的工程里面有一个运行时系统runtimeOS,默认是HarmonyOS,检查是否是否修改
cke_1681.png

请在 File -> Project Structure -> Sign Configs 配置你的签名信息,(不使用自动签名)

这样会自动生成签名配置里面的内容,password等字段会加密。

"signingConfigs": [...]

在DevEco Studio 5.0.5中构建OpenHarmony应用时出现签名错误,通常是由于签名配置问题导致。请检查项目的build-profile.json5文件,确认signingConfigs中的storePasswordkeyAliaskeyPassword是否正确,以及签名文件路径是否有效。同时,确保在buildOptions中已启用签名("signing"设为true)。若使用自动签名,需在Project Structure中配置正确的证书信息。

根据你的描述,这是一个典型的OpenHarmony应用签名配置问题。核心原因在于你使用了为HarmonyOS设计的签名流程和文件来配置OpenHarmony项目,两者不兼容。

问题根因分析:

  1. 签名类型不匹配:你通过DevEco Studio菜单 构建->生成私钥和证书请求文件 生成的是用于 HarmonyOS 应用的签名材料(.p12、.cer、.csr)。而你的项目 runtimeOS 设置为 "OpenHarmony",签名配置 "type" 也设置为 "OpenHarmony"。OpenHarmony应用需要使用其专属的调试或发布证书,而非HarmonyOS的证书。
  2. 密码长度限制误解:OpenHarmony签名对 storePasswordkeyPassword 有明确的长度要求:必须恰好为32个字符。你遇到的错误信息(至少32位、无效长度)正是源于此规则。HarmonyOS的密码规则则不同。

解决方案:

你需要为OpenHarmony项目配置正确的签名。最直接有效的方法是使用自动签名,让DevEco Studio为你处理所有细节。

步骤:

  1. 清理现有配置

    • 删除项目根目录下的 key32 文件夹。
    • 打开项目级的 build-profile.json5 文件,将 "signingConfigs" 整个配置块暂时删除或注释掉。
  2. 配置自动签名

    • 在DevEco Studio中,点击菜单栏 File -> Project Structure...
    • 在左侧选择 Project -> Signing Configs 选项卡。
    • Signing Configs 页面,你会看到 debugrelease 两个配置项。
    • 确保 Store File 下拉框为 “Automatically generate signature”(自动生成签名)。这是关键。
    • 检查 Key AliasStore PasswordKey Password 这几个字段,此时应该已被系统自动填充为灰色的默认值(由IDE管理,密码长度符合要求)。
    • 点击 OK 保存。
  3. 验证与构建

    • 保存后,IDE会自动在项目根目录生成一个 signature 文件夹,里面包含OpenHarmony调试所需的证书文件(.cer、.p12、.p7b)。
    • 同时,build-profile.json5 文件中的 signingConfigs 部分会被自动更新,配置指向新生成的签名文件,且密码字段是符合32位长度的正确值。
    • 现在尝试重新构建你的应用。

原理说明:runtimeOS 设置为 "OpenHarmony" 时,DevEco Studio的自动签名机制会识别并生成一套符合OpenHarmony签名规范的调试证书。这避免了手动创建证书时类型、格式、密码规则不匹配的所有问题。

如果因项目特殊原因必须使用自定义证书,那么你需要按照OpenHarmony官方文档的指引,通过命令行工具(如 openssl)或特定的资源申请流程来生成符合OpenHarmony格式要求的证书和私钥,但这对于刚入手的调试阶段并非必要。自动签名是官方推荐的、最便捷的调试开发方式。

回到顶部