回复
#2023盲盒+码# DevEcoStuio项目自动签名和签名完整备份技巧 原创
westinyang
发布于 2023-8-27 01:30
浏览
0收藏
【本文正在参加 2023「盲盒」+码有奖征文活动】 https://ost.51cto.com/posts/25284
@toc
关于作者:I’m westinyang
序言
很多刚开始学习OpenHarmony应用开发的小伙伴们,对于应用签名会比较迷惑,尤其是手动签名需要一些命令生成应用证书和对Profile签名等,虽然自动签名比较方便,但是如果开发一个应用长期维护,每次点击自动签名都会生成新的应用证书和与之对应绑定的p7b文件,更换签名会导致应用无法覆盖安装到设备
那有没有什么办法去完整的备份自动签名的应用证书和p7b等文件,方便在不同开发电脑上迁移和复用的呢,那本文就来分享具体操作步骤
完整备份自动签名
- 我们以新建的一个 MyApplication 空项目为例做演示
- 创建完项目进行自动签名
- 默认生成的证书存放位置:
C:\Users\%username%\.ohos\config\openharmony\
- 我们找到以下这几个文件
auto_ohos_default_MyApplication_com.example.myapplication.cer
auto_ohos_default_MyApplication_com.example.myapplication.csr
auto_ohos_default_MyApplication_com.example.myapplication.p7b
auto_ohos_default_MyApplication_com.example.myapplication.p12
- 这些自动生成的应用证书先备份下
- 除此之外还需要备份项目跟目录中
build-profile.json5
内的签名配置
"signingConfigs": [
{
"name": "default",
"material": {
"certpath": "C:\\Users\\你的用户名\\.ohos\\config\\openharmony\\auto_ohos_default_MyApplication_com.example.myapplication.cer",
"storePassword": "0000001B204EDA07025D59FE9EFDDFA040D877AD866799056701B052707F70535CE6B25F25D364F9D29E5C",
"keyAlias": "debugKey",
"keyPassword": "0000001BAF30CE7A0F9510F6569BD832945EB61417B6F369F28C5965CA8F9D7856C9162C240A53DA6C0D82",
"profile": "C:\\Users\\你的用户名\\.ohos\\config\\openharmony\\auto_ohos_default_MyApplication_com.example.myapplication.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "C:\\Users\\你的用户名\\.ohos\\config\\openharmony\\auto_ohos_default_MyApplication_com.example.myapplication.p12"
}
}
],
- 到这里还没有结束,重中之重是还需要备份一个秘钥盐文件存放的文件夹,如果没有这个下次使用这些应用证书和配置,pwd就失效了
- 也就是这个目录:
C:\Users\%username%\.ohos\config\openharmony\material
也需要备份下 - material 这个目录是首次自动签名生成的,后续你只要不删除它,一直都不会变的
- 其实我更建议把备份的 证书文件和material文件夹 放到项目根目录新建一个文件夹内,例如:
signature
- 然后修改项目的签名配置为相对路径
"signingConfigs": [
{
"name": "default",
"material": {
"certpath": "./signature/auto_ohos_default_MyApplication_com.example.myapplication.cer",
"storePassword": "0000001B204EDA07025D59FE9EFDDFA040D877AD866799056701B052707F70535CE6B25F25D364F9D29E5C",
"keyAlias": "debugKey",
"keyPassword": "0000001BAF30CE7A0F9510F6569BD832945EB61417B6F369F28C5965CA8F9D7856C9162C240A53DA6C0D82",
"profile": "./signature/auto_ohos_default_MyApplication_com.example.myapplication.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "./signature/auto_ohos_default_MyApplication_com.example.myapplication.p12"
}
}
],
- 这样就更方便在不同项目中同时管理签名证书的存放了,也不同担心重装系统或更换电脑后还要重新自动签名,导致打包的应用因证书前后不一致,带来的无法覆盖安装等问题
不换应用证书提权
如果后续应用所申请的权限超出了之前自动签名生成的p7b文件约束,那我们需要再次修改Profile控制访问权限,其实可以在不更换之前生成的证书的同时,只对Profile单独签名生成p7b进行应用的提权,具体操作可以参考我往期的这篇文章:https://ost.51cto.com/posts/25038
其中最关键的一点就是把原有应用证书中第一段用\n连成一行填写在Profile中的distribution-certificate配置中,这样生成的p7b文件才是与之前的应用证书关联的有效的
持续关注
- 关于作者:I’m westinyang
- 哔哩哔哩:个人主页
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-1-18 16:48:32修改
赞
收藏
回复
相关推荐