当前位置: 首页 > news >正文

HarmonyOS应用/服务发布:打造多设备生态的关键一步

目前

  • 前言
  • HarmonyOS 应用/服务发布的重要性
  • 使用HarmonyOS 构建跨设备的应用生态
  • 前期准备工作
  • 简述发布流程
  • 生成签名文件
  • 配置签名信息
  • 编译构建.app文件
  • 上架.app文件到AGC
  • 结束语

前言

随着智能设备的快速普及和多样化,以及编程语言的迅猛发展,构建一个无缝连接的多设备生态系统已经成为当前技术发展的大趋势,而HarmonyOS 作为华为自主研发的分布式操作系统,为开发者提供了一个创新的平台,使大家能够将应用和服务无缝地跨设备发布和交互。那么本文就来详细分享一下HarmonyOS 应用/服务发布的重要性以及如何利用 HarmonyOS 构建跨设备的应用生态。

HarmonyOS 应用/服务发布的重要性

在过去的几年中,智能设备的发展呈现出多样化和高度互联的趋势,如智能手机、智能手表、智能电视等,这些设备之间的互联互通成为用户的期望和需求,而HarmonyOS 作为一个分布式操作系统有很多独特的优势和重要功能,具体可以汇总以下几点:

  • 统一开发框架:HarmonyOS 提供了统一的开发框架,使开发者可以使用一套代码开发适配多设备的应用,这意味着我们开发者可以更高效地开发和发布应用,可以为用户提供一致的体验。
  • 多设备互联:HarmonyOS 的分布式能力使得不同设备之间可以无缝连接和通信,实现数据共享和协同工作,可以通过将应用和服务发布到 HarmonyOS 生态系统中,开发者可以为用户提供跨设备的一体化体验。
  • 强大的能力和性能:还有就是HarmonyOS 提供了强大的能力和性能,使开发者能够实现更丰富、更高效的应用,无论是在智能手机、智能手表还是智能电视上,HarmonyOS 都能够提供流畅的用户界面和卓越的性能。

使用HarmonyOS 构建跨设备的应用生态

为了充分利用 HarmonyOS 的优势,通过使用HarmonyOS 构建跨设备的应用生态,我们开发者可以采取以下步骤来构建跨设备的应用生态:

  • 了解 HarmonyOS:作为鸿蒙开发者,首先需要深入了解 HarmonyOS 的基本概念和架构,而且应该熟悉 HarmonyOS 的分布式能力、开发框架和工具,以便更好地利用这些功能。
  • 适配应用:开发者还需要对现有的应用进行适配,使其能够在 HarmonyOS 上运行并与其他设备进行互联,而且需要熟练使用 HarmonyOS 提供的开发工具,对应用进行修改和优化,以适应不同设备的特性和屏幕尺寸。
  • 发布到 HarmonyOS 生态:我们可以将适配后的应用发布到 HarmonyOS 的应用商店,让用户能够轻松地下载和安装,还可以将应用注册为 HarmonyOS 的系统服务,使其能够与其他应用和设备无缝交互。
  • 提供一体化体验:结合HarmonyOS 的一体化优势,开发者应该注重提供一体化的用户体验,利用 HarmonyOS 的分布式能力,使用户能够在不同设备上无缝切换并保持应用的状态和数据同步。
  • 持续改进和创新:随着 HarmonyOS 的不断发展,作为鸿蒙开发者应该密切关注最新的功能和更新,并及时进行应用的改进和创新,也可以利用 HarmonyOS 提供的开发者社区和资源,与其他开发者交流经验和分享最佳实践。

前期准备工作

做过鸿蒙开发的开发者想必都清楚,HarmonyOS是通过数字证书与Profile文件等签名信息来保证应用/服务的完整性,应用/服务上架到AppGallery Connect必须通过签名校验,所以需要使用发布证书和Profile文件对应用/服务进行签名后才能发布,所以这是进行HarmonyOS 应用/服务发布前的必备准备工作。

另外,在应用/服务发布到AppGallery Connect之后,会将应用分发至应用市场,将服务分发至服务中心,用户便可以通过终端设备上的应用市场App获取HarmonyOS应用,通过服务中心获取元服务。

简述发布流程

我们作为鸿蒙开发者,在完成HarmonyOS应用/服务开发后,需要将应用/服务打包成App Pack(.app文件),用于发布到华为应用市场,具体发布应用/服务的流程如下图所示:

生成签名文件

移动开发者想必对生成签名并不陌生,但是不熟悉生成签名的小伙伴也不必担心,接下来就来具体分享一下生成签名文件的方法步骤。其实HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性,我们在申请数字证书和Profile文件前,需要先通过DevEco Studio来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。

基本概念

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

使用DevEco Studio生成密钥和证书请求文件

1、在主菜单栏单击Build > Generate Key and CSR。(需要注意:如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中单击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。)

2、在Key Store File中,可以单击Choose Existing选择已有的密钥库文件(存储有密钥的.p12文件);如果没有密钥库文件,单击New进行创建,下面以新创建密钥库文件为例来讲:

3、在Create Key Store窗口中,填写密钥库信息后,单击OK。

  • Key Store File:设置密钥库文件存储路径,并填写p12文件名。
  • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • Confirm Password:再次输入密钥库密码。

4、在Generate Key and CSR界面中,继续填写密钥信息后,单击Next。

  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
  • Validity:证书有效期,建议设置为25年及以上,覆盖应用/服务的完整生命周期。
  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。

5、在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名。

6、单击OK按钮,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。

申请发布证书和Profile文件

j接着就是申请发布证书和Profile文件的操作,通过生成的证书请求文件,向AppGallery Connect申请发布证书和Profile文件,具体如下所示:

  • 创建HarmonyOS应用/服务:在AppGallery Connect项目中,创建一个HarmonyOS应用/服务,用于发布证书和Profile文件申请,这里不再多讲,可以参考鸿蒙官方对应的文档:文档中心(需要注意:在应用/服务分发阶段,HarmonyOS应用将被分发至应用市场,原子化服务将会被分发至服务中心,所以如果申请原子化服务的签名证书,在“创建应用”操作时,“是否原子化服务”选项请选择“是”。)
  • 申请发布证书和Profile文件:在AppGallery Connect中申请、下载发布证书和Profile文件,这里也不再过多讲解,可以参考鸿蒙官方对应的文档:文档中心

用于发布的证书和Profile文件申请完成后,请在DevEco Studio中进行签名,接下来会详细讲解配置签名信息。

配置签名信息

通过上面关于使用制作的私钥(.p12)文件、在AppGallery Connect中申请的证书(.cer)文件和Profile(.p7b)文件,在DevEco Studio配置工程的签名信息,构建携带发布签名信息的APP。在File > Project Structure > Project > Signing Configs > default界面中,取消“Automatically generate signature”勾选项,然后配置工程的签名信息。(需要注意:如果是API Version 4至7的工程,请在Signing Configs界面,选择Release,然后配置签名信息。)

  • Store File:选择密钥库文件,文件后缀为.p12。
  • Store Password:输入密钥库密码。
  • Key Alias:输入密钥的别名信息。
  • Key Password:输入密钥的密码。
  • Sign Alg:签名算法,固定为SHA256withECDSA。
  • Profile File:选择申请的发布Profile文件,文件后缀为.p7b。
  • Certpath File:选择申请的发布数字证书文件,文件后缀为.cer。

通过上面的步骤设置完签名信息后,单击OK进行保存,然后使用DevEco Studio生成APP,接下来就是编译构建.app文件的详细操作步骤。

编译构建.app文件

在编译构建打包APP时,DevEco Studio会将工程目录下的所有HAP模块打包到APP中,所以如果工程目录中存在不需要打包到APP的HAP模块,需要手动删除后再进行编译构建生成APP,具体操作步骤如下所示:

  1. 单击Build > Build Hap(s)/APP(s) > Build APP(s),等待编译构建完成已签名的APP。
  2. 编译构建完成后,可以在工程目录build > outputs > app > release下,获取带签名的APP。

上架.app文件到AGC

最后就是将HarmonyOS应用/服务打包成.app文件后上架到AppGallery Connect,AppGallery Connect会将HarmonyOS应用至应用市场,将元服务分发至服务中心,上架详细操作指导本篇内容不再介绍,后面会单独做上架鸿蒙应用的文章,具体的请参考鸿蒙官方的文档:文档中心

结束语

通过本文关于HarmonyOS 应用/服务发布的介绍,想要入门鸿蒙开发的小伙伴应该都学会了吧?我觉得HarmonyOS 应用/服务发布是构建多设备生态系统的关键一步,它为开发者提供了一个创新的平台,使我们能够开发和发布适配多设备的应用和服务,推动了智能设备之间的互联互通。另外,通过利用 HarmonyOS 的统一开发框架、多设备互联能力和强大的性能,我们鸿蒙开发者可以为用户提供一致、流畅且高效的体验。同时,作为用户,我们将享受到更便捷、智能的生活体验,我们可以通过 HarmonyOS 实现智能手机、智能手表、智能电视等设备之间的无缝切换和协同工作,同时享受到一致的应用界面和数据同步,这将极大地提升我们的生产力和娱乐体验。在未来,随着智能设备的不断发展和用户对连接性的需求不断增加,构建一个无缝连接的多设备生态系统将变得更加重要,而HarmonyOS 作为一个开放的操作系统,将继续吸引更多的开发者加入,并推动多设备生态发展的进程。随着 HarmonyOS 生态的不断壮大,我们可以期待更多创新和便利的应用和服务的涌现,让我们的生活更加智能、简单和愉悦。最后,希望本文对读者关于HarmonyOS 应用/服务发布有所帮助和指导,并能够让您在未来的多设备生态系统中获得更好的体验。

相关文章:

HarmonyOS应用/服务发布:打造多设备生态的关键一步

目前 前言HarmonyOS 应用/服务发布的重要性使用HarmonyOS 构建跨设备的应用生态前期准备工作简述发布流程生成签名文件配置签名信息编译构建.app文件上架.app文件到AGC结束语 前言 随着智能设备的快速普及和多样化,以及编程语言的迅猛发展,构建一个无缝…...

【数据结构】双向带头循环链表实现及总结

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 双向带头循环链表的实现2. 顺序表和链表的区别 1. 双向带头循环链表的实现 List.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h>typede…...

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥&#xff0c;并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…...

音箱、功放播放HDMI音频解决方案之HDMI音频分离器HHA

HDMI音频分离器HHA简介 HDMI音频分离器HHA具有一路HDMI信号输入&#xff0c;转换成一路HDMI信号、一路5.1光纤音频信号、一路5.1 SPDIF/同轴音频信号和一路模拟左右声道立体声信号输出&#xff0c;同时还支持EDID存储及兼容HDCP功能&#xff1b;分辨率最高支持1920*1080p&#…...

天猫数据分析:2023年坚果炒货市场年销额超71亿,混合坚果成多数消费者首选

近年来&#xff0c;随着人们生活水平和健康意识的提升&#xff0c;在休闲零食市场中&#xff0c;消费者们也越来越关注食品的营养价值&#xff0c;消费者这一消费偏好的转变也为坚果炒货食品行业带来了发展契机。 整体来看&#xff0c;坚果炒货市场的体量较大。根据鲸参谋电商…...

YouTrack 用户登录提示 JIRA 错误

就算输入正确的用户名和密码&#xff0c;我们也得到了下面的错误信息&#xff1a; youtrack Cannot retrieve JIRA user profile details. 解决办法 出现这个问题是因为 YouTrack 在当前的系统重有 JIRA 的导入关联。 需要把这个导入关联取消掉。 找到后台配置的导入关联&a…...

题目 1163: 排队买票

题目描述: 有M个小孩到公园玩&#xff0c;门票是1元。其中N个小孩带的钱为1元&#xff0c;K个小孩带的钱为2元。售票员没有零钱&#xff0c;问这些小孩共有多少种排队方法&#xff0c;使得售票员总能找得开零钱。注意&#xff1a;两个拿一元零钱的小孩&#xff0c;他们的位置互…...

【lesson9】高并发内存池Page Cache层释放内存的实现

文章目录 Page Cache层释放内存的流程Page Cache层释放内存的实现 Page Cache层释放内存的流程 如果central cache释放回一个span&#xff0c;则依次寻找span的前后page id的没有在使用的空闲span&#xff0c;看是否可以合并&#xff0c;如果合并继续向前寻找。这样就可以将切…...

Java基础面试题-6day

I/O流基础知识总结 &#xff08;1&#xff09; io即输入输出流&#xff0c; 如何区分输入还是输入流 以内存为中介&#xff0c;当我们是将数据存储到内存即为输入&#xff0c;反之存储到外部存储器&#xff0c;即为输出 在Java中分输入输出流&#xff0c;根据数据处理又可以分…...

【Oracle 集群】RAC知识图文详细教程(三)--RAC工作原理和相关组件

RAC 工作原理和相关组件 OracleRAC 是多个单实例在配置意义上的扩展&#xff0c;实现由两个或者多个节点&#xff08;实例&#xff09;使用一个共同的共享数据库&#xff08;例如&#xff0c;一个数据库同时安装多个实例并打开&#xff09;。在这种情况下&#xff0c;每一个单独…...

二级C语言笔试2

(总分100,考试时间90分钟) 一、选择题 下列各题A)、B)、C)、D)四个选项中&#xff0c;只有一个选项是正确的。 1. 下列叙述中正确的是( )。 A) 算法的效率只与问题的规模有关&#xff0c;而与数据的存储结构无关 B) 算法的时间复杂度是指执行算法所需要的计算工作量 …...

如何计算两个指定日期相差几年几月几日

一、题目要求 假定给出两个日期&#xff0c;让你计算两个日期之间相差多少年&#xff0c;多少月&#xff0c;多少天&#xff0c;应该如何操作呢&#xff1f; 本文提供网页、ChatGPT法、VBA法和Python法等四种不同的解法。 二、解决办法 1. 网页计算法 这种方法是利用网站给…...

再识C语言 DAY13 【递归函数(超详细)】

文章目录 前言一、函数递归什么是递归递归的两个重要条件练习一练习二 递归与迭代练习三练习四在练习三、四中出现的问题 如果您发现文章有错误请与我留言&#xff0c;感谢 前言 本文总结于此文章 一、函数递归 什么是递归 函数调用自身的编程技巧称为递归 &#xff08;函数自…...

【Linux】权限管理

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一 、Linux中的用户1.1 Linux用户分类1.2 用户转换1.3 指令提权 二、Linux权限管…...

地理坐标系、空间坐标系、epsg查询网站

坐标系可用范围和详细信息的查询网站 简介 epsg.ruiduobao.com是一个可以查询gdal中所有坐标系信息的网站&#xff0c;可查询到坐标系的基准面、椭球体、中央子午线等相关信息&#xff0c;并对每个坐标系的可用范围在地图中进行了显示。详细信息可以看操作视频&#xff1a; e…...

docker 容器指定主机网段

docker 容器指定主机网段。 使用macvlan网络模式可以让Docker容器直接连接到物理网络&#xff0c;而不需要通过NAT或端口映射的方式来访问它们。可以提高网络性能和稳定性&#xff0c;同时也可以使容器更易于管理。 1、查询网卡的名称&#xff1a;使用ifconfig命令查看网卡名…...

零基础Vue框架上手;git,node,yarn安装

项目搭建环境&#xff1a; git安装&#xff1a;Git - 安装 Git (git-scm.com)&#xff08;官网&#xff09; 下载路径&#xff1a;Git - Downloading Package (git-scm.com)&#xff1b;根据自己电脑下载相对应的安装包 ​ 点next ​ 点next&#xff0c;点到最后安装就行。…...

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时&#xff0c;首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…...

【BBF系列协议】TR181-1 TR069的设备数据模型

TR-069的TR-181设备数据模型 执行摘要 TR-181定义了TR-069 [2]设备数据模型的版本1(设备:1)。设备:1数据模型仅适用于启用TR-069的终端设备,不适用于互联网网关设备或其他网络基础设施设备。启用TR-069的基础设施设备改为使用TR-098 [4]互联网网关设备数据模型或未来设备…...

Elasticsearch(简称ES)性能优化 实践

Elasticsearch&#xff08;简称ES&#xff09;性能优化主要包括以下几个方面&#xff1a; 索引优化&#xff1a; 选择合适的分片数&#xff1a;根据业务需求和数据量合理设置分片数&#xff0c;避免过多或过少分片造成性能问题。分片数过多会导致创建分片速度变慢、集群易崩溃…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...