> 文档中心 > openharmony标准系统之app手动签名

openharmony标准系统之app手动签名

今天在标准系统上使用DevEco Studio 3.0 Beta2开发app时,想直接在真机上运行,结果提示吐下信息,

App LaunchInstall Failed: [Info]App install path:D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\entry\build\outputs\hap\debug\entry-debug-standard-ark-unsigned.hap, queuesize:0, msg:error: failed to install bundle. error: no signature file. AppMod finish

这种情况是因为没有给app进行签名导致的,现在按照官方文档进行签名操作,首先如下图,进入Build去生成证书请求文件
openharmony标准系统之app手动签名
进入如上图展示的选项后,然后选择如下图所示的选项。
openharmony标准系统之app手动签名
然后出现如图所示界面,我们填写这个就可。
openharmony标准系统之app手动签名
点击此箭头进入选择保存路径以及设置名字,如下图展示
openharmony标准系统之app手动签名
进入后的界面如下图所示,选择正确的路径以及填写名字
openharmony标准系统之app手动签名
然后点击OK就行,然后再在如下图所示界面填写密码,注意密码格式如下,

openharmony标准系统之app手动签名
我这里用的是zxy122456
openharmony标准系统之app手动签名
填写完成后点击OK完成创建,然后接着填写如下信息。
openharmony标准系统之app手动签名

  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
  • Validity:证书有效期,建议设置为25年及以上,覆盖应用/服务的完整生命周期。
  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。
    openharmony标准系统之app手动签名
    然后点击箭头所指示的Next即可,然后会出现如下界面
    openharmony标准系统之app手动签名
    这里需要设置我们的路径,点击箭头所指选项,
    openharmony标准系统之app手动签名
    选择保存的路径,设置名字,然后点击OK。
    openharmony标准系统之app手动签名
    回到上图所示界面后点击Finish即可,会提示如下图所示信息,点击ok即可。
    openharmony标准系统之app手动签名
    创建成功如下所示多了几个文件。
    openharmony标准系统之app手动签名
    接着需要生成证书文件,步骤如下,进入DevEco Studio安装目录的Sdk\toolchains\lib文件夹下(该SDK目录只能是OpenHarmony SDK),比如我这里是如下图路径,
    openharmony标准系统之app手动签名
    将如上图所示文件全部拷贝到我们的key目录
    openharmony标准系统之app手动签名
    然后找到如下图所示的路径,因为我们的keytool工具没有添加到系统环境变量,所以需要如此操作
    openharmony标准系统之app手动签名
    打开此路径的cmd,然后执行如下命令
    keytool -gencert -alias “OpenHarmony Application CA” -infile D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\HelloWorld.csr -outfile D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\HelloWorld.cer -keystore D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\OpenHarmony.p12 -sigAlg SHA384withECDSA -storepass 123456 -ext KeyUsage:“critical=digitalSignature” -validity 3650 -rfc
  • alias:用于签发证书的CA私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改。
  • infile:证书请求(CSR)文件的路径。
  • outfile:输出证书链文件名及路径。
  • keystore:签发证书的CA密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改。请注意,该OpenHarmony.p12文件并不是使用DevEco Studio生成证书请求文件中生成的.p12文件。
  • sigAlg:证书签名算法,该参数不能修改。
  • storepass:密钥库密码,密码为123456,该参数不能修改。
  • ext:证书扩展项,该参数不能修改。
  • validity:证书有效期,自定义天数。
  • rfc:输出文件格式指定,该参数不能修改。
    执行完成如下图。
    openharmony标准系统之app手动签名
    生成如下图所示的文件就算成功。
    openharmony标准系统之app手动签名
    然后再使用如下命令生成Profile文件
    java -jar D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\provisionsigtool.jar sign --in D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\UnsgnedReleasedProfileTemplate.json --out D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\HelloWorld.p7b --keystore D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\OpenHarmony.p12 --storepass 123456 --alias “OpenHarmony Application Profile Release” --sigAlg SHA256withECDSA --cert D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name com.mc.helloworld --distribution-certificate D:\APP\HarmonyOS\Project\openHarmonyProject\standard\HelloWorld\Key\HelloWorld.cer

provisionsigtool:Profile文件生成工具,文件在OpenHarmony SDK的Sdk\toolchains\lib路径下。
in:Profile模板文件所在路径,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改。
out:输出的Profile文件名和路径。
keystore:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改。
storepass:密钥库密码,密码为123456,该参数不能修改。
alias:用于签名Profile私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改。
sigAlg:证书签名算法,该参数不能修改。
cert:签名Profile的证书文件路径,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改。
validity:证书有效期,自定义天数。
developer-id:开发者标识符,自定义一个字符串。
bundle-name:填写应用包名。
permission:可选字段,如果不需要,则可以不用填写此字段;如果需要添加多个受限权限,则如示例所示重复输入。受限权限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
distribution-certificate:生成应用证书文件中生成的证书文件。
然后就是配置使用签名信息,首先进入如下所示选项
openharmony标准系统之app手动签名
然后选择如下图所示选项
openharmony标准系统之app手动签名

openharmony标准系统之app手动签名
这里填写信息说明如下:

  • Store File:选择密钥库文件,文件后缀为.p12,该文件为使用DevEco Studio生成证书请求文件中生成的.p12文件。
  • Store Password:输入密钥库密码,该密码为使用DevEco Studio生成证书请求文件中填写的密钥库密码保持一致。我这里使用zxy1122456
  • Key Alias:输入密钥的别名信息,与使用DevEco Studio生成证书请求文件中填写的别名保持一致。我这里是HelloWorld_debug
  • Key Password:输入密钥的密码,与Store Password保持一致。zxy1122456
  • Sign Alg:签名算法,固定为SHA256withECDSA。
  • Profile File:选择生成应用Profile文件中生成的Profile文件,文件后缀为.p7b。
  • Certpath File:选择生成证书文件中生成的数字证书文件,文件后缀为.cer。
  • 然后点击右下角OK即可。