2

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息

 2 years ago
source link: https://blog.51cto.com/harmonyos/5073520
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

开发OpenHarmony应用的第一步就是配置环境,如果你需要使用开发板(真机)进行调试,那就免不了配置签名信息,下面我们聊下基于OpenHarmony应用开发的签名配置。

OpenHarmony应用的第一步就是配置环境,签名流程。使用真机设备运行和调试OpenHarmony应用前,需要对应用进行签名才能正常运行。配置应用签名信息的流程如下图所示。
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_OpenHarmony

配置签名认证时需要密钥文件(.p12文件)和证书请求文件(.csr文件),并根据密钥和证书请求文件生成数字证书(.cer文件)和Profile文件(.p7b文件),Profile文件是用来保证应用的完整性。

二、如何生成应用签名

2.1、生成密钥和证书请求文件

说明:通过DevEco Studio生成生成密钥和证书请求文件

2.1.1、在主菜单栏点击Build > Generate Keyand CSR。

2.1.2、创建Key Store File

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_应用签名_02

签名文件其他配置
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_03

2.1.3、认证请求文件

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_04
点击“Finish”后可以生成认证请求文件,可以查看对应的文件夹,如下图:
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_OpenHarmony_05

2.1.4、使用命令行工具生成应用证书文件

使用生成密钥和证书请求文件中生成的证书请求文件,来生成应用签名所需的数字证书文件。生成方法如下:

进入DevEco Studio安装目录.\SDK\toolchains\lib,执行以下命令:


keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos.csr -outfile myApplication_ohos.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity  3650 -rfc

其中,只需要修改输入和输出即可快速生成证书文件,即修改-infile指定证书请求文件csr文件路径,-outfile指定输出证书文件名及路径

关于该命令的参数说明如下:

  • alias:用于签发证书的CA私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改
  • infile:证书请求(CSR)文件的路径。
  • outfile:输出证书链文件名及路径。
  • keystore:签发证书的CA密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改。请注意,该OpenHarmony.p12文件并不是生成密钥和证书请求文件中生成的.p12文件。
  • sigalg:证书签名算法,该参数不能修改
  • storepass:密钥库密钥,密钥为123456,该参数不能修改
  • ext:证书扩展项,该参数不能修改
  • validity:证书有效期,自定义天数,命令中设置了3650天。
  • rfc:输出文件格式指定,该参数不能修改

你可能遇到下面的问题。

问题1:keystore OpenHarmony.p12在Sdk\toolchains\lib下没有对应的文件?

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_06

问题分析:OpenHarmony SDK与HarmonyOS SDK不同,你确认在DevEco Studio的Settings中是否把两个SDK的目录配置为相同,建议配置成不同的路径,用于下载或更新SDK。
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_07
解决方案1:OpenHarmony SDK、HarmonyOS SDK存放到不同的目录下,再下载和更新SDK。查看两个SDK\toolchains\lib下的文件区别,如下:
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_08

解决方案2:不推荐,手动下载OpenHarmony SDK,解压相关的文件(OpenHarmony.p12)到指定目录(Sdk\toolchains\lib)下即可
查看解决方案: 配置OpenHarmony应用签名信息里的几个文件没有
 SDK-2.0-Cancry下载地址
重新执行生成证书文件命令,如下:
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_应用签名_09

2.1.5、生成应用Profile文件

Profile文件包含OpenHarmony应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个Profile文件。
进入Sdk\toolchains\lib目录下,打开命令行工具,执行如下命令。


java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out OH_App_debug.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id xxx --bundle-name xxx.myAppDemo --permission ohos.permission.READ_CONTACTS --permission ohos.permission.WRITE_CONTACTS --distribution-certificate xxx\app_debug.cer

参数说明:

  • provisionsigtool:Profile文件生成工具,文件在OpenHarmony SDK的Sdk\toolchains\lib路径下。
  • in:Profile模板文件所在路径,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改
  • out:输出的Profile文件名和路径。
  • keystore:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改
  • storepass:密钥库密钥,密钥为123456,该参数不能修改
  • alias:用于签名Profile私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改
  • sigalg:证书签名算法,该参数不能修改
  • cert:签名Profile的证书文件路径,文件在OpenHarmony SDK中Sdk\toolchains\lib路径下,该参数不能修改
  • validity:证书有效期,自定义天数。
  • developer-id:开发者标识符,自定义一个字符串。
  • bundle-name:填写应用包名。
  • permission:可选字段,如果不需要,则可以不用填写此字段;如果需要添加多个受限权限,则如示例所示重复输入。受限权限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
  • distribution-certificate:生成应用证书文件中生成的证书文件。

执行命令后,就可以生成应用Profile文件,如下:
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_应用签名_10

三、真机调试

接下去我们可以拿真机进行调试,在真机设备上调试前,需要使用制作的私钥(.p12)文件、证书(.cer)文件和Profile(.p7b)文件对调试的模块进行签名。

3.1、配置签名

在DevEco Studio的菜单上打开File > Project Structure,点击Project > Signing Configs > debug窗口中,去除勾选“Automatically generate signing”,然后配置指定模块的调试签名信息。

  • Store File:选择密钥库文件,文件后缀为.p12,该文件为生成密钥和证书请求文件中生成的.p12文件。
  • Store Password:输入密钥库密钥,该密钥为生成密钥和证书请求文件中填写的密钥库密钥保持一致。
  • Key Alias:输入密钥的别名信息,与生成密钥和证书请求文件中填写的别名保持一致。
  • Key Password:输入密钥的密钥,与Store Password保持一致。
  • Sign Alg:签名算法,固定为SHA256withECDSA。
  • Profile File:选择生成应用Profile文件中生成的Profile文件,文件后缀为.p7b。
  • Certpath File:选择生成应用证书文件中生成的数字证书文件,文件后缀为.cer。

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_OpenHarmony_11

设置签名信息后,点击“OK”进行保存,然后可以在工程build.gradle中查看签名的配置信息。
OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_应用签名_12

3.2、编译打包APP

配置签名后,可以通过Build->Build Hap(s)/APP(s)->Build Hap(s),编译完成后,OpenHarmony应用的Hap包可以从工程的bulid目录下获取.如下:

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_应用签名_13

如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。

 想了解更多关于鸿蒙的内容,请访问:

 51CTO和华为官方合作共建的鸿蒙技术社区

 https://ost.51cto.com/#bkwz

OpenHarmony应用开发(1)--配置OpenHarmony应用签名信息_真机调试_14


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK