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

2023-11-22 04:40

本文主要是介绍【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. 生成p12文件

2. 生成csr文件

3. 创建项目

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

5. 添加设备

6. 创建鸿蒙应用

7. 获得p7b文件


程序千万行

签名第一行

程序不签名

猿猿两行泪

 

在真机上运行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

图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设备,然后执行下面的命令。

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 签名存储信息

 

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

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

 

 

 

 

 

 

 

这篇关于【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/407577

相关文章

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

如何解决yum无法安装epel-release的问题

《如何解决yum无法安装epel-release的问题》:本文主要介绍如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录yum无法安装epel-release尝试了第一种方法第二种方法(我就是用这种方法解决的)总结yum

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed