背景&版本

目前DevEco最新版本为DevEco Studio NEXT Developer Beta5(5.0.3.700),工具地址:https://developer.huawei.com/consumer/cn/download/

当前DevEco提供了应用自动签名工具,我们这里讨论在自动签名情况下,系统应用签名遇到的问题。

普通的应用只需打开"Project Structur" 窗口,在"Signing Configs"界面下勾选"Automatically generate signature"点击应用和确认即可对应用进行自动签名,
免去了我们需要准备签名文件后进行手动配置的操作。如下图所示:

img

以下问题这里在DevEco Studio 4.0 Release(4.0.0.600)版本以上进行说明,系统应用以systemui为示例。

systemui的签名文件和签名参数获取

  1. 打开applications_systemui查看代码,在signature文件夹中,可以发现systemui.p7b文件,
    签名缺失Store file(\*.p12)Certpath file(\*.cer) 文件,和 Store passwordKey aliasKey password 等签名信息。

  2. 打开 SystemUI使用说明查看签名文件获取
    这里提到拷贝OpenHarmony标准版工程的 OpenHarmony\signcenter_tool 目录到操作目录。查看截图中可以看到,
    Store file(\*.p12)使用的是OpenHarmony.p12Certpath file(\*.cer) 使用的是OpenHarmonyApplication.cer
    Key aliasOpenHarmony Application Release

    img

  3. 打开signcenter_tool,发现此仓已废弃前往新仓 developtool_hapsigner
    打开dist目录,其中存在OpenHarmony.p12文件和其他文件,但是不存在OpenHarmonyApplication.cer文件。
    虽然不存在OpenHarmonyApplication.cer文件,但是存在OpenHarmonyApplication.pem文件,
    只需要将OpenHarmonyApplication.pem文件后缀名改为.cer即可。

  4. 我们拿到了签名所需的文件,但是Store passwordKey password还没有找到。
    打开createAppCertAndProfile.config,可以看到:

// Common configuration, will be overwrite by detail config
common.keystoreFile=OpenHarmony.p12
common.keystorePwd=123456
common.keyAlg=ECC
common.keySize=NIST-P-256
common.signAlg=SHA256withECDSA
common.validity=365
common.outForm=certChain
common.mode=localSign

// You must change this instead of using default
common.keyPwd=123456
common.issuerKeyPwd=123456

默认的keystoreFileOpenHarmony.p12,默认的keystorePwdkeyPwd均为123456

由此我们可以拿到所有的签名数据。

注意:其他使用了默认的OpenHarmony.p12作为密钥对库的系统应用,签名数据均可参考上面的步骤获取。

手动配置签名

当我们拿到上面的所有签名数据进行手动签名时发现,提示密码无效:

img


img

DevEco提示,密码必须至少8位,不能以-开始,必须包含下面4中数据类型中的两种。不同版本的DevEco的签名密码校验规则可能不太一样,
在之前比较老的版本上,没有对密码进行校验,因此可以使用老版本的DevEco进行签名,有兴趣的可以去找一下3.0.0.900这个版本。

这里我们主要是对新版本的DevEco进行修改,将其密码校验进行屏蔽。

打开DevEco安装目录下的plugins\openharmony\project-mgmt-view\static\js\main.js文件,搜索Invalid password. Set the password as instructed.

img

展开validator代码:

img

修改为如下:

img

最后删除展开空位:

img

由于main.js是混淆压缩过的文件,这里我们需要对validator进行修改,外面的大写E并不固定。

基于上面修改保存后(保存可能需要系统权限),我们再进行systemui的签名:

img

签名后,在根目录下的build-profile.json5文件中查看签名信息:

img

总结

当使用新版本的DevEco进行系统应用开发时,若应用自带了\*.p7b文件,其余签名数据为:

  • OpenHarmony.p12: OpenHarmony.p12
  • OpenHarmonyApplication.cer: OpenHarmonyApplication.pem下载后改后缀名为OpenHarmonyApplication.cer
  • Store password: 123456
  • Key alias: OpenHarmony Application Release
  • Key password: 123456

按照上面手动配置签名中对DevEco安装目录的plugins\openharmony\project-mgmt-view\static\js\main.js文件进行修改。

如果不想修改DevEco文件,可以直接将以下签名信息拷贝到项目的build-profile.json5文件中,注意替换成自己本地的签名文件路径即可:

"signingConfigs": [
    {
        "name": "release",
        "material": {
            "storeFile": "XXX/OpenHarmony.p12",
            "storePassword": "0000001664C74BAC6D30E1337AF2109F52418ECDD61CA8BBCFBA06466B79530CCDD2C458BE94",
            "certpath": "XXX/OpenHarmonyApplication.cer",
            "keyAlias": "OpenHarmony Application Release",
            "keyPassword": "00000016130082ECB8B3518A60A4F33BBC4DF61ED3FA3F6069CBD18831FDD2D354E5D8385B57",
            "signAlg": "SHA256withECDSA",
            "profile": "XXX/xxx.p7b"
        }
    }
]
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐