02鸿蒙APP真机运行及证书签名打包

目录

  • 1、真机运行
    • 1.1、运行安装错误
    • 1.2、解决方案:
      • 第一步:安装兼容真机的sdk版本2.2.0(API6),如下图所示:
      • 第二步:新建一个API6的工程项目
      • 第三步:运行API6创建的工程项目
      • 第四步:配置Debug签名
      • 第五步:再次运行
    • 1.3、安装小结
  • 2、正式版签名并打包
    • 2.1、创建p12和csr文件
      • 2.1.1、第一种:在IDE中创建签名文件
        • 第一步:先点击Build/Generate Key and CSR菜单
        • 第二步:选择key store file文件
        • 第三步:设置.p12文件存储的位置及密码
        • 第四步:填写必要的信息
        • 第五步:查看p12和csr文件
      • 2.1.2、通过Cmd命令来生成签名文件
        • 第一步:生成P12密钥文件
        • 第二步:生成csr文件
        • 第三步:查看生成的p12和csr文件
    • 2.2、创建cer文件
    • 2.3、创建p7b文件
      • 第一步:回到AppGallery connect的主界面,如下图所示:
      • 第二步:点击”我的项目“,进入界面,如下图所示:
      • 第三步:点击”添加项目“,输入项目名称,并点击”创建并继续“按钮,如下图所示:
      • 第四步:可手动关闭为此项目启动分析服务,减少步骤,如下图所示:
      • 第五步:点击”完成“之后,开始为此项目添加应用,如下图所示:
      • 第六步:添加应用
      • 第七步:添加应用成功后,添加HAP Provision Profile,如下图所示:
      • 第八步:下载p7b证书,如下图所示:
      • 第九步:查看证书,如下图所示:
  • 3、配置Release签名信息
  • 4、打包hap和app
  • 5、总结
  • 6、参考链接

1、真机运行

1.1、运行安装错误

Failure[INSTALL_PARSE_FAILED_USESDK_ERROR] 

原因:就是APP的高版本API和真机的低版本API不兼容,导致运行安装到真机上失败,高版本API9不能兼容鸿蒙3.0的真机系统。

目前只有一台华为真机,其鸿蒙系统版本是3.0.0.168,而我安装的sdk版本是最新的,如下面的图所示:
在这里插入图片描述
在这里插入图片描述

此时看到的现象是:Device设备能选到,点击执行安装APP时,就报错INSTALL_PARSE_FAILED_USESDK_ERROR ,执行hdc list targets 命令始终是[Empty]。

hdc指令可能会遇到error: no devices/emulators found 这种错误,插拔一下真机设备,很可能就是连接没成功,反复多试几次,直至成功,找到驱动,获取真机的API版本,如下图所示:

在这里插入图片描述

确认了华为真机鸿蒙系统的API版本是6,我想继续在这台真机上安装调试APP,怎么办呢?

1.2、解决方案:

第一步:安装兼容真机的sdk版本2.2.0(API6),如下图所示:

在这里插入图片描述

第二步:新建一个API6的工程项目

不能直接修改/build-profile.json5配置文件中的版本,因为会报错。
在这里插入图片描述

一定要注意,API6开发语言变成JS和JAVA,并没有ArkTs,所以这是比较坑的地方。对老版本鸿蒙系统不是很礼貌。

第三步:运行API6创建的工程项目

在这里插入图片描述
运行失败,右下角弹出了,没签名无法安装的错误提示。

第四步:配置Debug签名

点击右下角的"open signing configs"按钮,进入之后,点击“Sign in”按钮,如下图所示:
在这里插入图片描述
会自动跳转到华为官方网站,登录华为账号(没账号,自己去申请开发者账号,这是门槛),授权登录,最后直到弹出如下界面:

在这里插入图片描述

根据指示回到IDE,看到新弹出一个界面,如下图所示:
在这里插入图片描述
点击“Agree”按钮,ide编译器自动生成了一个Debug签名文件,如下图所示:

在这里插入图片描述

其中Release的签名还没有,后面我们再来处理,继续点击“OK”按钮,窗口自动关闭。

第五步:再次运行

继续点击运行安装到真机按钮“Run entry”,运行成功,应用已被安装到真机上,如下图所示:
在这里插入图片描述

1.3、安装小结

  • 鸿蒙3.0的系统安装真机运行,最重要的就是检查API的版本,高版本是不兼容低版本的API;
  • HDC指令获取真机API版本,经常会出现无法找到驱动设备,所以要反复尝试插拔连接好,必要时可以hdc kill一下;
  • 必须依赖华为开发者账号,并根据引导自动获取Debug签名信息;
  • 低版本的API并不支持ArtTS语言开发。

2、正式版签名并打包

签名APP时需要4个关键的签名相关文件,它们是.p12、.csr、.p7b、.cer,构建这些文件还是有点繁琐的,这4个文件怎么用,我们后面的步骤再说,先磨刀后砍柴。

  • .p12:密钥,格式为.p12,包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,公钥和私钥对用于数字签名和验证。
  • .csr:证书请求文件,格式为.csr,全称为Certificate Signing
    Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。
  • .p7b:Profile文件,格式为.p7b,包含HarmonyOS应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个Profile文件,分为调试Profile和发布Profile。
  • .cer:数字证书,格式为.cer,由华为AppGallery Connect颁发,分为应用调试证书和应用发布证书。

这个4个文件从哪里来呢?接下来就来看看怎么创建。

2.1、创建p12和csr文件

.p12和.csr文件是本地文件,所以合并来讲,其有两种方式实现,在IDE中创建和通过Cmd命令来创建。

2.1.1、第一种:在IDE中创建签名文件

第一步:先点击Build/Generate Key and CSR菜单

如下图所示:
在这里插入图片描述

第二步:选择key store file文件

可以看到生成CSR之前还需要选择一个*.p12的文件,由于没有,所以点击New,但是还是需要一个key store file 文件,如下图所示:
在这里插入图片描述

第三步:设置.p12文件存储的位置及密码

注意在上图中的第二处,是让你选择p12文件存储的目录及文件名,如下图所示,
在这里插入图片描述

第四步:填写必要的信息

点击OK按钮,填写必要的信息,如下图所示:
在这里插入图片描述
点击Next按钮就会在D:根目录下生成my_ide_key.p12两个文件,但遗憾的是,并不会那么顺利,会报错,如下图所示:
在这里插入图片描述
原因是D:\盘是我的系统盘,权限可能不足,我存储到E:\my_ide_key.p12这个路径,问题顺利解决,弹出新的界面,如下图所示

在这里插入图片描述

第五步:查看p12和csr文件

点击Finish按钮,到E:\盘根目录下查看生成的.p12 、.csr两个文件,如下图所示:
在这里插入图片描述

2.1.2、通过Cmd命令来生成签名文件

第一步:生成P12密钥文件

在Cmd命令行工具中,执行下面的指令来生成:

keytool -genkeypair -alias "my_second_application" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=my_second_application"  -keystore d:\\mysecondapplicationkey.p12 -storetype pkcs12 -validity 9125 -storepass 12345678Asd -keypass 12345678Asd

其中“my_second_appliction”是别名、"d:\mysecondapplicationkey.p12"是p12文件保存的路径、“12345678Asd”是其密码(必须要包含数字及大小写字母),都可以自己修改。

如果遇到下面这种错误,请搜索cmd.exe并使用管理员权限运行即可解决

keytool 错误: java.io.FileNotFoundException: d:\mysecondapplicationkey.p12 (客户端没有所需的特权。)

最终cmd命令执行结果如下就表示生成p12文件成功,如下图所示:

在这里插入图片描述

在D盘就找到了我们千辛万苦需要的p12文件,如下图所示:
在这里插入图片描述

第二步:生成csr文件

在cmd命令行工具中,执行如下命令:

keytool -certreq -alias "my_second_application" -keystore d:\\mysecondapplicationkey.p12 -storetype pkcs12 -file d:\\mysecondapplicationkey.csr

执行结果,如下图所示:

在这里插入图片描述

必须先生成p12文件,然后在p12文件的基础上再生成.csr文件,因为生成csr时需要输入p12的密钥库口令,也就是前面设置的"12345678Asd"。

第三步:查看生成的p12和csr文件

打开电脑D:/盘根目录,最终生成的两个签名需要的文件已经具备,如下图所示:
在这里插入图片描述

2.2、创建cer文件

这个文件申请有一个强制要求,就是必须要在AppGallery Connect上创建一个应用,然后才能获取得到.cer文件。
AppGallery Connect访问地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/
,进入此网址后,如下图所示:
在这里插入图片描述

点击“用户与访问”,弹出界面,如下所示:
在这里插入图片描述
点击“新增证书”按钮,填写能填的信息,如下图所示:
在这里插入图片描述

点击”选取“按钮,选择前面步骤中在本地创建好的D:/mysecondapplicationkey.csr这个文件,点击提交,如下图所示:
在这里插入图片描述

提交之后,就生成了我们发布证书,点击证书下载,即可获得.cer文件,如下图所示:
在这里插入图片描述
到此目前获得了3个文件,如下图所示:
在这里插入图片描述

2.3、创建p7b文件

第一步:回到AppGallery connect的主界面,如下图所示:

在这里插入图片描述

第二步:点击”我的项目“,进入界面,如下图所示:

在这里插入图片描述

第三步:点击”添加项目“,输入项目名称,并点击”创建并继续“按钮,如下图所示:

在这里插入图片描述

第四步:可手动关闭为此项目启动分析服务,减少步骤,如下图所示:

在这里插入图片描述

第五步:点击”完成“之后,开始为此项目添加应用,如下图所示:

在这里插入图片描述

第六步:添加应用

点击”添加应用“按钮,输入必填信息,如下图所示:

在这里插入图片描述

包名可以从config.jsonde的bundleName值中获取,如下图所示:
在这里插入图片描述
创建应用时,可能会遇到软件包名(com.example.mysecondapplication)这个包名已存在的问题,巨坑啊,在本地项目中改一下包名:
直接在本地项目中全局替换包名,同时要去修改项目文件的路径,与包路径保持一致,如下图所示:
在这里插入图片描述

替换之后可能会安装报错,如下图所示:
在这里插入图片描述

因为更改了包名,还得去重新生成一下debug调试的Key信息,如下所示:
在这里插入图片描述
勾选上图中的选项就会重新走一次,debug模式的key信息,再次Run按钮,就会在真机上重新安装一个新的包名的APP了。

第七步:添加应用成功后,添加HAP Provision Profile,如下图所示:

在这里插入图片描述

第八步:下载p7b证书,如下图所示:

在这里插入图片描述

第九步:查看证书,如下图所示:

在这里插入图片描述

到此文件已经准备完毕。

3、配置Release签名信息

打开项目的Project Structure界面,选择Siging Configs菜单,配置好准备的文件信息,如下图所示:
在这里插入图片描述
点击OK完成配置,会自动关闭此界面,就可以去打出签名包了。

4、打包hap和app

点击Build菜单,即可打包hap和App,如下图所示:
在这里插入图片描述

签名后的应用,打包出来的结果如下图所示:

在这里插入图片描述

5、总结

整个签名到打包的过程确实很漫长,4个签名相关的文件创建就要费九牛二虎之力,还需要要开发者账号才可以做鸿蒙开发,所以门槛还是存在,务必要注意cmd工具在使用时需要运行管理员权限再执行,hdc命令也是一样,遇到失败多尝试,总会解决。

6、参考链接

API兼容问题:https://developer.huawei.com/consumer/cn/forum/topic/0203136649588923577
证书申请:https://developer.huawei.com/consumer/cn/doc/app/agc-help-harmonyos-releaseapp-0000001126380068






原创不易,求个关注。

在这里插入图片描述

微信公众号:一粒尘埃的漫旅
里面有很多想对大家说的话,就像和朋友聊聊天。
写代码,做设计,聊生活,聊工作,聊职场。
我见到的世界是什么样子的?
搜索关注我吧。

公众号与博客的内容不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/241572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何提高嵌入式软件工程师的技术深度?

今日话题,如何提高嵌入式软件工程师的技术深度?建立坚实的基础知识是深入研究的关键。只有深入理解基础知识,才能在理论指导下不断深化和扩展自己的技术。没有坚实的基础,深入研究就显得空中楼阁。如果你有兴趣进入嵌入式行业我可…

数据库——安全性

智能2112杨阳 一、目的与要求: 1、设计用户子模式 2、根据实际需要创建用户角色及用户,并授权 3、针对不同级别的用户定义不同的视图,以保证系统的安全性 二、内容: 先创建四类用户角色: 管理员角色Cusm、客户角…

初级数据结构(三)——栈

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;二&#xff09;——链表 | 初级数据结构&#xff08;四&#xff09;——队列 下一篇-> 1、栈的特性 1.1、函数栈帧简述 即使是刚入门几天的小白&#xff0c;对栈这个字…

Linux——MySQL数据库系统()

一、访问MySQL数据库 MySQL数据库系统也是一个典型的C/S(客户端/服务器&#xff09;架构的应用&#xff0c;要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中&#xff0c;最简单、易用的MySQL客户端软件是其自带的mysql命令工具。 1、登录到MySQL服务器经过安装后的初…

深入理解TheadLocal的使用场景和注意事项

前言 在日常实际开发当中我们往往会看到项目中有使用 ThreadLocal 的场景&#xff0c;大多数人有时候可能涉及不到自己的业务则没有进行关注。通常我在看代码时对于一些未知的东西常常引起我的好奇&#xff0c;我往往会分析&#xff1a;为什么要这么做&#xff1f;好处是什么&…

一文看懂支付前链路流程

一文看懂支付前链路流程 前序 首先支付流程讲究的就是快&#xff0c;还有就是订单的冲入&#xff0c;我们不能说一笔交易订单进来都加一个分布式锁去解决&#xff0c;所以我们目前常用的做法就是一个订单进来&#xff0c;首先落库&#xff0c;如果落库失败&#xff0c;并且是…

用XAMPP在Windows系统构建一个本地Web服务器

用XAMPP在Windows系统构建一个本地Web服务器 Build a Local Web Server for Windows with XAMPP By JacksonML 本文简要介绍如何获取和安装XAMPP以实现Windows环境下本地Web服务器的过程&#xff0c;希望对广大网友和学生有所帮助。 所谓本地Web服务器&#xff0c;即使用本地…

UML-认识6种箭头(画类图无烦恼)

文章目录 一、背景二、箭头详解2.1 泛化&#xff08;Generalization&#xff09;2.2 实现&#xff08;Realize&#xff09;2.3 依赖&#xff08;Dependency&#xff09;2.4 关联&#xff08;Association&#xff09;2.5 聚合&#xff08;Aggregation&#xff09;2.6 组合&#…

24V降12V2A同步降压芯片WT6023A

24V降12V2A同步降压芯片WT6023A 今天给大家带来一款高性能的DC/DC转换器WT6023A&#xff0c;快来一起了解一下吧&#xff01; WT6023A是一款采用抖动频率模式控制架构的高效、单片同步降压型DC/DC转换器&#xff0c;能够提供高达6A的连续负载&#xff0c;具有出色的线路和负载…

BugKu-Web-Flask_FileUpload(模板注入与文件上传)

Flask Flask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架&#xff0c;因为它的核心非常简单&#xff0c;但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug&#xff0c;一个WSGI工具箱&#xff0c;以及Jinja2&#xff0c;一个模板引擎。 Flask使用BSD…

快速准确翻译文件夹名:英文翻译成中文,文件夹批量重命名的技巧

在处理大量文件夹时&#xff0c;可能会遇到要将英文文件夹名翻译成中文的情况。同时也可能要批量重命名这些文件夹。今天一起来看下云炫文件管理器如何快速准确翻译文件夹名&#xff0c;进行批量重命名的技巧。 下图是文件夹名翻译前后的效果图。 英文文件夹名批量翻译成中文…

注意力机制和自注意力机制

有很多自己的理解&#xff0c;仅供参考 Attention注意力机制 对于一张图片&#xff0c;我们第一眼看上去&#xff0c;眼睛会首先注意到一些重点的区域&#xff0c;因为这些区域可能包含更多或更重要的信息&#xff0c;这就是注意力机制&#xff0c;我们会把我们的焦点聚焦在比…

2023年12月7日:QT实现登陆界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置this->resize(600,500);//重新设置窗口大小this->setWindowTitle("QQ-盗版");//设置窗口名为QQ-盗版this->setWindowIcon(QIcon("D:\\Qt\\funny\\pi…

【改进YOLOv8】融合感受野注意力卷积RFCBAMConv的杂草分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着计算机视觉技术的不断发展&#xff0c;图像分割成为了一个重要的研究领域。图像分割可以将图像中的不同对象或区域进行有效的分离&#xff0c;对于许多应用领…

【广州华锐视点】仓储物流3D数字孪生平台打造更高效、智能的物流管理体验

在当今快速发展的物流行业中&#xff0c;传统的管理和监控方法往往难以满足复杂运营的需求。为了解决这个问题&#xff0c;广州华锐互动提供仓储物流3D数字孪生平台定制开发服务&#xff0c;打造更为高效、智能的物流管理体验。 仓储物流3D数字孪生平台是一种基于虚拟现实技术的…

DNS漫游指南:从网址到IP的奇妙之旅

当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图 1*4vb-NMUuYTzYBYUFSuSKLw.png 问题&#xff1a; 什么是 DNS&#xff1f; 答案 → DNS 指的是域名系统&#xff08;Domain Name System&#xff09;。DNS 是互联网的目录&#xff0c;将人类可读的域名&#…

flutter 代码混淆

Flutter 应用混淆&#xff1a; Flutter 应用的混淆非常简单&#xff0c;只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 –obfuscate --split-debug-info 用来指定输出调试文件的位置&#xff0c;该命令会生成一个符号映射表。目前…

学习Django从零开始之一

Django 是用Python开发的一个免费开源的Web框架&#xff0c;可以用于快速搭建高性能&#xff0c;优雅的定制网站&#xff01;采用了MVC的框架模式&#xff0c;即模型M&#xff0c;视图V和控制器C&#xff0c;也可以称为MVT模式&#xff0c;模型M&#xff0c;视图V&#xff0c;模…

python编程需要的电脑配置,python编程用什么电脑

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python编程对笔记本电脑配置的要求&#xff0c;python编程对电脑配置的要求有哪些&#xff0c;现在让我们一起来看看吧&#xff01; 学习python编程需要什么配置的电脑 简单的来讲&#xff0c;Python的话普通电脑就可以…

应用ICP-MS实验PFA烧杯耐腐蚀带刻度反应杯的特点分析

聚四氟&#xff08;PFA&#xff09;烧杯可用于痕量分析、同位素分析等实验&#xff0c;ICP-MS实验室适用。半导体、多晶硅、光伏电子 锂电池行业均适用。杯体刻度清晰&#xff0c;方便观察&#xff0c;尖嘴方便倾倒溶液。 可溶性聚四氟乙烯烧杯特性&#xff1a; 1、透明&…