前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!

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

作者头像
蒙娜丽宁
发布2021-07-05 14:37:47
8031
发布2021-07-05 14:37:47
举报
文章被收录于专栏:极客起源极客起源

程序千万行

签名第一行

程序不签名

猿猿两行泪

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

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

1. 生成p12文件

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

代码语言:javascript
复制
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的文件。

代码语言:javascript
复制
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

图1 创建项目页面

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

图2 创建新项目

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

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

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

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

图3 创建证书

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

图4 下载cer文件

5. 添加设备

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

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

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

图5 添加设备

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

代码语言:javascript
复制
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 应用列表

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

图7 添加应用

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

7. 获得p7b文件

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

图8 添加HAP Provision Profile

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

图9 下载p7b文件

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

图10 用于签名的文件

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

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

图11 为工程签名

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

图12 签名存储信息

- EOF -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档