使用新版本DevEco进行系统应用签名
背景&版本 目前DevEco最新版本为DevEco Studio NEXT Developer Beta5(5.0.3.700),工具地址:https://developer.huawei.com/consumer/cn/download/ 当前DevEco提供了应用自动签名工具,我们这里讨论在自动签名情况下,系统应用签名遇到的问题。 普通的应用只需打开"Project Stru
背景&版本
目前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"点击应用和确认即可对应用进行自动签名,
免去了我们需要准备签名文件后进行手动配置的操作。如下图所示:
以下问题这里在DevEco Studio 4.0 Release(4.0.0.600)版本以上进行说明,系统应用以systemui为示例。
systemui的签名文件和签名参数获取
打开applications_systemui查看代码,在signature文件夹中,可以发现
systemui.p7b
文件,
签名缺失Store file(\*.p12)
、Certpath file(\*.cer)
文件,和Store password
、Key alias
、Key password
等签名信息。打开 SystemUI使用说明查看签名文件获取,
这里提到拷贝OpenHarmony标准版工程的 OpenHarmony\signcenter_tool 目录到操作目录。查看截图中可以看到,Store file(\*.p12)
使用的是OpenHarmony.p12
,Certpath file(\*.cer)
使用的是OpenHarmonyApplication.cer
。Key alias
是OpenHarmony Application Release
打开signcenter_tool,发现此仓已废弃前往新仓 developtool_hapsigner,
打开dist目录,其中存在OpenHarmony.p12
文件和其他文件,但是不存在OpenHarmonyApplication.cer
文件。
虽然不存在OpenHarmonyApplication.cer
文件,但是存在OpenHarmonyApplication.pem
文件,
只需要将OpenHarmonyApplication.pem
文件后缀名改为.cer即可。我们拿到了签名所需的文件,但是
Store password
、Key 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
默认的keystoreFile
为OpenHarmony.p12
,默认的keystorePwd
、keyPwd
均为123456
。
由此我们可以拿到所有的签名数据。
注意:其他使用了默认的OpenHarmony.p12
作为密钥对库的系统应用,签名数据均可参考上面的步骤获取。
手动配置签名
当我们拿到上面的所有签名数据进行手动签名时发现,提示密码无效:
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.
展开validator代码:
修改为如下:
最后删除展开空位:
由于main.js是混淆压缩过的文件,这里我们需要对validator进行修改,外面的大写E并不固定。
基于上面修改保存后(保存可能需要系统权限),我们再进行systemui的签名:
签名后,在根目录下的build-profile.json5文件中查看签名信息:
总结
当使用新版本的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"
}
}
]
更多推荐
所有评论(0)