【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!

目录

1. 生成p12文件

2. 生成csr文件

3. 创建项目

4. 通过csr文件在线申请cer文件(调试证书文件)

5. 添加设备

6. 创建鸿蒙应用

7. 获得p7b文件


程序千万行

签名第一行

程序不签名

猿猿两行泪

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第1张图片

 

在真机上运行App与在模拟器上运行App不同。在真机上不管是调试(debug)还是发布(release),都需要对hap文件进行签名。签名一个hap文件需要4类文件:p12、csr、cer和p7b文件。其中p12和csr文件可以自助生成,cer和p7b文件需要到华为开发者网站后台去申请,然后下载。

生成这4类文件,需要经过下面几步:

1. 生成p12文件

执行下面的命令,就会在当前目录生成一个名为demo.p12的文件。

keytool -genkeypair -alias "myalias" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=Huawei CBG,OU=HOS Development IDE Team,CN=ide_demo_pk Debug" -keystore demo.p12 -storetype pkcs12 -storepass 1234abcd

在执行上面的命令之前,需要将如下3个信息修改成自己的内容(其他的内容不需要改):

  • -alias命令行参数后面的别名,本例是myalias;
  • -keystore命令行参数后面的文件名,本例是demo.p12;
  • -storepass命令行参数后面的密码,本例是1234abcd;

2. 生成csr文件

执行下面的命令会在当前目录生成一个名为demo.csr的文件。

keytool -certreq -alias "myalias" -keystore demo.p12 -file demo.csr

其中-alias命令行参数指定的别名要与生成demo.p12时指定的别名相同,demo.csr可以改成其它的文件名。

注意,在执行上面的命令之前,要先生成demo.p12文件。在生成demo.csr文件的过程中,会要求输入生成demo.p12文件时指定的密码,本例是1234abcd。一定要记住这个密码,因为在后面配置App签名时还要用到。

3. 创建项目

使用下面的Url打开页面,并点击“我的项目”按钮,进入创建项目页面,如图1所示。读者可以在该页面创建一个或多个项目,每一个项目可以包含0到多个安装包。

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第2张图片

图1 创建项目页面

点击左侧的“添加项目”链接,会弹出如图2所示的页面,输入项目名,点击“确定”按钮就可以创建新项目。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第3张图片

图2 创建新项目

4. 通过csr文件在线申请cer文件(调试证书文件)

通过下面的Url打开页面,并点击“用户与访问”按钮。

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

进入该页面后,在左侧导航栏选择“证书管理”,进入证书管理页面,点击“新建证书”按钮弹出新建证书窗口,并按要求输入相应的内容,如图3所示。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第4张图片

图3 创建证书

创建完证书后,会在证书列表中看到刚才创建的证书,如图4所示。点击右侧的“下载”链接,下载对应的cer文件,本例是“我的证书.cer”文件。

图4 下载cer文件

5. 添加设备

通过下面的Url打开页面,并点击“用户与访问”按钮。

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

进入该页面后,在左侧导航栏选择“设备管理”,进入设备管理页面。然后点击右侧的“添加设备”按钮,会弹出如图5所示的窗口。这里需要选择设备类型、输入设备名称和UDID,然后点“提交”按钮添加设备。只有在这里添加的设备才能使用起前面申请的证书安装HarmonyOS App。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第5张图片

图5 添加设备

要想获得设备的UDID,需要用USB数据线连接HarmonyOS设备,然后执行下面的命令。

adb shell dumpsys DdmpDeviceMonitorService

成功执行命令后,在输出结果中的Local device info部分找到dev_udid,后面的字符串就是该设备的UDID。

如果有多部设备连接到了PC上,需要使用-s命令行参数指定设备标识。

6. 创建鸿蒙应用

通过下面的Url打开页面,并点击“我的项目”按钮。

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

进入该页面后,在上面会列出在该项目下创建的应用,如图6所示,读者可以点击“添加应用”链接创建新的应用。

 

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第6张图片

图6 应用列表

添加应用页面如图7所示。读者需要在该页面按图1-30所示填写必要的信息(需要按自己App的情况填写相应的内容)。其中“支持设备”保持默认值就可以在HarmonyOS手机上运行。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第7张图片

图7 添加应用

注意:如果App的包变了,需要重新按这一步添加应用,否则App将无法部署在HarmonyOS手机上。

7. 获得p7b文件

进入上一步创建的应用的页面,点击右上角的“添加”按钮,添加一个HAP Provision Profile。在这一步是一个总绑定。将App的包、证书和设备绑定在一起。也就是说,只有特定包的App、使用特定的证书,才能在特定的设备上部署。进入页面后,可以仿照图8所示填写这个页面的内容。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第8张图片

 

图8 添加HAP Provision Profile

成功添加HAP Provision Profile后,会在列表中显示刚才创建的HAP Provision Profile,如图9所示。点击右侧“下载”链接,就会下载一个名为“网盘p7bDebug.p7b”的文件。

 

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第9张图片

图9 下载p7b文件

到目前为止,所有必要的文件都已经齐备,通过这7步获得了如图10所示的4个文件,其中demo.csr只是一个中间文件,在签名时并不需要它。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第10张图片

图10 用于签名的文件

注意:可能有的读者会感到生成证书比较麻烦,需要这么多步。其实只有第一次签名要这么多步。当再创建新的应用,其实只需要做第6步和第7步就可以了。也就是说,如果设备不变,在签名时只需要更换p7b文件就可以了。

做完上面的几步,就可以打开IDE的Project Structure窗口,并对工程进行前签名,如图11所示。在签名时注意相关文件的选择,不要选错了。其中密码就是前面输入的密码。最后点击OK按钮完成签名。

 

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第11张图片

 图11 为工程签名

签完名,会在工程的build.gradle文件中出现如图12所示的内容,用于存储签名信息。如果下次再对同一个包签名,可以直接将signingConfigs标签的内容复制到对应工程的build.gradle文件中。

【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!_第12张图片

图12 签名存储信息

 

还有一种自动签名的方式,请看这篇文章:

鸿蒙最新IDE(DevEco Studio)绝密档案大揭秘,绝对有你不知道的东西!

 

 

 

 

 

 

 

你可能感兴趣的:(鸿蒙(HarmonyOS),鸿蒙,HarmonyOS)