#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文件才是与之前的应用证书关联的有效的

持续关注

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-1-18 16:48:32修改
收藏
回复
举报
回复
    相关推荐