在开发过程中,我们可以通过切换 debug 和 release 的 build Model 来构建测试服和正式服环境。但是有时,我们需要使用正式服环境 + release 签名来给测试打包,让测试验证某些功能。

举个例子:我们接入某些一键登录的第三方 SDK,我们需要给第三方提供我们的包名、App 名称、debug 签名的 sha256、release 签名的 sha256。此时接入成功后,会出现以下几种可能:

  • debug build Model + debug 签名:可以直接安装到真机,三方 SDK 使用正常。✅
  • release build Model + debug 签名:可以安装到真机,三方 SDK 报错(签名不匹配)。❌
  • release build Model + release 签名:无法直接安装到真机,要发布到 AppGallery (后续简称 AGC)申请测试。❓

如果我们想要使用 release build Model + release 签名,并且直接在真机上安装,则先要了解如下几个概念。

①:证书和 profile 相关文件

②:hap、app、hsp、har

一、签名

1. 为什么要签名?

iOS 我不太了解,无论安卓手机还是鸿蒙手机,你要想安装应用,该应用必须要被签名。简单来说,就是为了安全。1. 签名可以证明应用的开发者、公司。2. 为了安全。

试想如果不需要签名,任何拥有安装包的用户,都有可能直接修改应用的内容,然后再重新打包上架。

2. 如何使用签名?

在 OpenHarmony 里,如果使用 debug 签名,可以在 DevEco-Studio(后续简称开发工具) 里打开Project Structure,然后切换到Signing Configs,点击Automatically generate signature即可。(可能需要登录,所以你需要先拥有一个账号。)

如果要使用 release 签名,则要稍微麻烦点:

  • 生成.p12.csr文件:在开发工具里点击Build > Generate Key and CSR

  • 申请发布证书和 Profile 文件:登录 AGC,新增证书,证书类型选择发布证书,然后选择上一步生成 .csr 文件。接着下载生成的证书和 Profile 文件(.cer 和 .p7b 文件)
  • 最后在build-profile.json5中配置 release 签名即可。

具体详细步骤可以查看官网教程

3. 为什么 release 签名无法安装到真机?

首先我们需要了解各个签名证书文件是干什么用的。

  • .p12:密钥文件,存储非对称个加密中的公钥和私钥。
  • .csr:证书请求文件,内部保存了在本地生成证书时,填写的信息。以及公钥
  • .cer:数字证书。包含公钥、证书以及 CA 签名
  • .p7b:Profile 文件。包含应用包名、数字证书信息、调试设备列表。

由此可知,我们的 release.p7b 文件中没有包含设备列表,所以无法安装。其次这个在生成 .p7b 文件的时候就可以感知到。我们在官网添加 Profile 证书时,如果选择的是"发布类型",则无法选择设备。如果我们选择调试、内部测试的时候是可以选择设备的(当然如果在设备栏中没有添加过设备,你则需要先添加设备,然后再来生成对应的证书。)。

4. 使用 release 签名相关的 Profile

正如上一小节所示,我们在添加 Profile 界面,填写对应的信息后,在类型一栏选择内部测试,然后选择证书时,选择你的 release 证书,此时是可以添加设备的。然后选择需要添加的设备。此时会生成一个新的 Profile 文件。我们将该文件和前面生成的签名文件放在一起。

然后在项目的build-profile.json5中使用 release 签名,并且把对应的 profile 文件路径换成新生成的 Profile 文件的路径。

二、尝试在分发平台发布应用

内测分发平台,可以方便管理我们发布的测试包。假设我们把测试包上传到蒲公英里。

1. hap、app、hsp、har

① app:我们上架 AGC 的时候,使用的就是 .app 产物。.app 包只能通过 AGC 来安装应用,无法直接安装。

② hap:运行、安装应用的基本单位。我们直接通过开发工具安装应用时,安装的就是 hap 包。蒲公英需要上传的就是 hap 包。

③ hsp、har:动态包和静态包。核心区别就是和动态库和静态库类似。hsp 会动态加载,har 会将代码拷贝在引入的地方。

2. 发布测试包

我们在蒲公英上传构建好的 hap 包。注意:一定要使用 release 签名的包,并且和 release 包对应的内测 Profile 文件。否则即使发布成功也无法安装到手机。

上传成功后还需要上传 .p12 文件,此时,如果你的 hap 有依赖 hsp 包,则还需要 build 对应的模块,并将 hsp 包传上去。

然后就可以通过二维码扫描安装了。

3. 解决问题

其实到目前为止,上述一切都还算比较顺利,我是在最后扫码安装的过程中遇到了一些问题。首先你要遵循以下几点准测,然后基本上能排除大部分错误,如果还有问题,就去查询错误码。

  • 确保你安装的是签名后的包,我们编译过程中,产物会有两个,一个是签名的,一个是未签名的,一定要是用签名后的包。如下图所示:signed 是签名的,unsgiend 是未签名的。

  • 确保你依赖的所有 hsp 包都上传。如果未完整上传所有 hsp 包,会导致安装错误。也有可能遇到安装成功,但是部分功能无法使用的问题。
  • 如果有更新,最好是在手机上先卸载再安装。
  • 注意网络缓存,有时候更新 hap、hsp 需要后,再次扫码,可能下载的是旧版本的应用。

错误码查询网站如下所示:

下载错误码

安装错误码

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐