【鸿蒙】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

相关文章

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.