详细比对:鸿蒙与安卓到底有什么区别?鸿蒙开发从这里开始

HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。

华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。

系统定位

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。

在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。

HarmonyOS有三大特征:

  • 搭载该操作系统的设备在系统层面融为一体、形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享

    对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,实现不同终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。

  • 面向开发者,实现一次开发,多端部署

    对应用开发者而言,HarmonyOS采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关,从而让开发者能够聚焦上层业务逻辑,更加便捷、高效地开发应用。

  • 一套操作系统可以满足不同能力的设备需求,实现统一OS,弹性部署

    对设备开发者而言,HarmonyOS采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。

HarmonyOS提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。

技术架构

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下所示。

内核层

  • 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
  • 驱动子系统:硬件驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

系统服务层

系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

  • 系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
  • 基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 、MSDP&DV等子系统组成。
  • 增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
  • 硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

框架层

框架层为HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。

应用层

应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

鸿蒙系统与安卓的区别

一、鸿蒙系统与安卓系统的区别在哪,是不是也是和安卓一样基于虚拟机创建的?

1、安卓与鸿蒙手机操作系统基本都是基于Linux开发的,但两者的构架是不同的:

安卓系统是基于linux的宏内核设计:宏内核包含了操作系统绝大多数的功能和模块,而且这些功能和模块都具有最高的权限,只要一个模块出错,整个系统就会崩溃,这也是安卓系统容易崩溃的原因。好处就是系统开发难度低。(而现在,华为新研发的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信,鸿蒙系统加编译器将取代虚拟机。)Android是用Java语言编写的,很容易学习。但它有一个缺点:不能与系统底层直接进行通信活动,必须通过虚拟机来运行。说直接点就是虚拟机相当于传递者:首先Android应用程序安装在虚拟机上,然后从虚拟机传输到机器的底部,如果虚拟机出了问题话的那系统就是卡住。而且鸿蒙系统中的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信,鸿蒙系统加编译器将取代虚拟机

鸿蒙操作系统是微内核设计:微内核仅包括了操作系统必要的功能模块(任务管理、内存分配等)处在核心地位具有最高权限,其他模块不具有最高权限,也就是说其他模块出现问题,对于整个系统的运行是没有阻碍的。微内核的开发难度很大,但是系统的稳定性很高。根据目前华为公布的一些资料信息,我们可以推断出鸿蒙系统是用C、C++语言编写即直接使用机器语言编写app,取消安卓系统的ART虚拟机,直接编译为二进制机器码,这样做的好处就是不需要中转,执行速度快;但这样的操作也有一些缺点就是必须要有大量的静态方案且内存空间要求更高。

有报道说鸿蒙系统比谷歌的安卓系统快运行速度快了60%,为什么会快这么多呢?原因有以下两点:

其一;谷歌的安卓系统是基于Linux开发,华为的“鸿蒙”系统也是基于Linux开发,并对Linux进行大量优化,此前,华为推出自研EROFS超级文件系统、仅是基于华为方舟编译器开发的应用,就能够让安卓系统性能提升数倍来看,底层整合了EROFS和方舟编译器的华为鸿蒙系统,自然要比安卓系统快很多

其二:安卓系统程序员写APP使用的是JAVA高级语言,打包成APK到安卓系统后。由于安卓系统读不懂JAVA高级语言,必须借助实时翻译(JAVA虚拟机)进行理解(转换成机器语言)。因为多了"翻译"这个步骤,所以安卓系统的流畅度一直以来都比不过苹果iOS。而方舟编译器,则是让APK打包之前,统一把指令换成安卓系统能读懂的机器语言,也就是省去了"翻译"这个步骤,效率自然就更高。

2、鸿蒙系统与安卓系统的使用范围不同:

第一:安卓系统适用于手机,而鸿蒙系统对设备兼容性更强,同时支持智能手机、智能穿戴设备、电脑、电视等智能家居设备,形成一个无缝的、统一的操作系统,并且兼容所有的安卓应用,适应当下的5G和物联网时代。

3、安卓系统经过多年发展,软件生态非常完善,鸿蒙系统目前来说还谈不上生态。华为推出鸿蒙操作系统并不困难,相对于推出操作系统而言,更难的是如何聚拢开发者为这款操作系统持续开发各类优质应用,让这款操作系统得以具备真正价值,继而发展壮大,在系统开发商、硬件厂商、开发者与用户之间形成良性正循环。要让开发者为鸿蒙操作系统开发应用,需要的是实实在在的政策激励,利益引导,依靠情怀等是无法解决也是不可持续的,这就是华为推出鸿蒙系统之后需要解决的一大难题!

3、鸿蒙系统的安全性怎么样,能否一改国内安卓软件的隐私问题。

上面我们聊到鸿蒙与安卓系统的区别中说到两个概念:微内核(鸿蒙),宏内核(安卓)。鸿蒙操作系统采用微内核,天然无Root,细粒度权限控制从源头提升系统安全。而安卓系统有Root权限,用户可以完全掌控经过Root之后的安卓系统。而鸿蒙则没有Root这一选项。同时据华为终端公司官微消息,鸿蒙基于微内核技术的可信执行环境,通过形式化方法显著提升了内核安全等级,全面提升全场景终端设备的安全能力。对此余承东曾表示过:微内核可以把每一个单独加锁,不可能一个钥匙攻破所有地方。而外核的相互隔离更加安全也更加高效。从全球最权威的安全机构评测看,现在外面的操作系统只能达到二三级,而我们的系统能达到5和5+最高级别。这是最高级别的安全OS。所以鸿蒙系统的安全性远高于安卓系统。

鸿蒙开发与安卓开发项目结构区别

开源网站

在开发者大会上宣布将 HarmonyOS源代码捐赠给中国开放原子开源基金会,并在大会上公布了鸿蒙系统的开源路线。

OpenHarmony 官方源码地址:

https://openharmony.gitee.com/openharmony

开发工具

鸿蒙使用基于 Intellij IDEA 深度定制研发的 DevEco Studio 作为其开发工具。

DevEco Studio 下载地址:

https://developer.harmonyos.com/cn/develop/deveco-studio

在应用开发过程中,HarmonyOS(鸿蒙)和 Android(安卓)开发环境有什么不同呢?

HarmonyOS 项目和 Android 项目对比

资源目录的变更

①资源目录名称有更改

安卓 res 目录,这里用 resources 目录,它包括 base 和 rawfile 两部分,其中 base 是核心的资源目录,常用的都放在这里面,便于查找和使用。rawfile 会原封不动打包到生成的应用里面。

安卓是 res/values 目录,这里是 resources/element 目录。安卓 raw 目录,这里用 rawfile 目录。

②资源目录分门别类,统一管理

Android 目录结构就比较松散,没有统一的文件夹管理,res/values 目录里面可以创建各种资源的 xml 文件,只能去官网查看有哪些可以创建。

这里有 base 目录统一管理。

③部分资目录删除,新增一些资源目录类型

比如 float.json 文件,plural.json 文件,profile 文件夹等。

④编写方式有改变,xml 变更为 json

安卓的 values 里面是 xml 写的,这里是 element 目录里面的,都是 json 格式的。

最后来一张同类型资源对比图:

完整的资源目录的具体变更对比如下图所示:

配置文件的变更

清单文件  AndroidManifest 变成了 config.json 文件。

Java 代码的变更

完整的 Java 目录的变更对比如下图所示:

HarmonyOS 项目和微信小程序项目对比

完整的 JS 目录和微信小程序对比如下图所示:

HarmonyOS 优点

多终端开发调试便捷

鸿蒙目前支持可以开发 TV,wearable, LiteWearable 几种设备类型,未来还会扩展到其他设备。并且一次代码就可以在不同设备快速部署和调试,操作非常简易。

对开发者友好,开发难度和学习成本低

①IDE 开发工具方面

DevEco Studio 是基于 Intellij IDEA 工具定制化深度研发的一个工具,所以对于那些熟悉 IDEA,或 Android Studio 或 WebStorm 这些 IDE 开发工具的朋友们来说应该是很熟悉的,不熟悉的朋友们也可以很快就上手。

另外正是由于是定制化的,所以去掉了 IDEA 里面杂七杂八的东西,只保留与鸿蒙项目有关的 SDK 和工具与设置,开发工具简洁纯净清爽,非常好用。

②语言平台

开发 TV 和 Wearable 项目可以选择 Java 或 JS 语言作为开发语言,开发 Lite Wearable 项目仅支持 JS 语言,都是大众喜爱和用的多的开发语言,大家的接受程度很高。

另外开发 Lite Wearable 项目需要用到 **.hml** 后缀的文件,这是鸿蒙团队自研的一个标签性语言,类似于 html,学习起来一点都不费力。

③框架方面

如果使用 Java 开发项目,你通过 Ctrl+鼠标左键点进去查看源码,你会发现 SDK 里面有很多 API 都是跟 Android 类似的,似曾相识的感觉。

不过也有一些是基于鸿蒙内核和底层一些特性新增的。如果你使用 JS 开发,你会发现和微信小程序写起来很类似。

所以框架层大家一看基本都可以看明白是怎么操作了,很好理解,也是大家都可以接受的,学习起来也不是难题。

④权限处理

另外安卓权限的处理是很麻烦的,鸿蒙里面在 config.json 里面可以配置全局的权限,被别人使用的权限,单独模块的权限,以及自定义属于自己的权限。

而且 Java 代码里面也可以用代码动态申请权限,鸿蒙的权限处理的颗粒度更细,对开发者来说,处理起来也是非常方便的。

⑤测试方便,无需下载模拟器

鸿蒙使用的是云测试,登陆开发者账号即可连接云设备,无需下载模拟器,还是很便捷的,即使换一台电脑,也不用担心因为没有下载模拟器而耽误测试进度,只要有网络,登陆账号即可进行测试。

以上只是 HarmonyOS(鸿蒙)应用开发工具 DevEco Studio 简单介绍,还有更多关于 DevEco Studio 的优势及特点等待您的挖掘。

  • DevEco Studio 2.0 是为了软件应用开发者准备的集成开发环境。风格类似于 Android Studio,也是基于 IDEA 的开源版本进行二次开发得来的。

  • HUAWEI DevEco Device Tool 则是为了硬件开发者准备的 IDE。

如果是软件应用开发者选择前者。

华为在全面开放鸿蒙系统的同时,会在华为开发者联盟内,全面支持鸿蒙应用的应用后台,渠道分发,数据统计,收益分成等等。

鸿蒙开发基础知识

用户应用程序

用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。

在HarmonyOS上运行的应用,有两种形态:

  • 传统方式的需要安装的应用。
  • 提供特定功能,免安装的应用(即原子化服务)。

在HarmonyOS文档中,如无特殊说明,“应用”所指代的对象包括上述两种形态。

用户应用程序包结构

HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。

一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图1所示。

  • entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
  • feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。

图1 APP逻辑视图

Ability

Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。

库文件

库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录。

资源文件

应用的资源文件(字符串、图片、音频等)存放于resources目录下,便于开发者使用和维护。

配置文件

配置文件 (config.json) 是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息。

pack.info

描述应用软件包中每个HAP的属性,由IDE编译生成,应用市场根据该文件进行拆包和HAP的分类存储。HAP的具体属性包括:

  • delivery-with-install: 表示该HAP是否支持随应用安装。“true”表示支持随应用安装;“false”表示不支持随应用安装。
  • name:HAP文件名。
  • module-type:模块类型,entry或feature。
  • device-type:表示支持该HAP运行的设备类型。

HAR

HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和config.json文件。HAR不同于HAP,HAR不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

开发概述

通用开发历程

各类设备(手机/平板、智能穿戴、智慧屏等)通用的用户应用程序开发历程如下表所示。

任务

简介

相关资源

开发Ability

Ability是HarmonyOS应用程序的重要组成部分,分为FA(Feature Ability)和PA(Particle Ability)两种类型:

  • FA支持Page Ability:Page模板是FA唯一支持的模板,用于提供与用户交互的能力。

  • PA支持Service Ability和Data Ability:Service模板用于提供后台运行任务的能力;Data模板用于对外部提供统一的数据访问抽象。

进行HarmonyOS应用开发,首先要了解Ability如何使用。

开发UI

FA需要提供UI用于与用户进行交互,HarmonyOS提供了Java UI和JS UI两种UI框架:Java UI提供了细粒度的UI编程接口,使应用开发更加灵活;JS UI提供了相对高层的UI描述,使应用开发更加简单。

说明

针对轻量级智能穿戴(Lite Wearable),现阶段只使用JS语言进行应用开发,详见轻量级智能穿戴开发

开发业务功能

  • 媒体:视频、音频、图像、相机等功能的开发。
  • 安全:权限、生物特征识别等功能的开发。
  • AI:图像超分、语音识别、码生成等功能的开发。
  • 网络连接:NFC、蓝牙、WLAN等功能的开发。
  • 设备管理:传感器、控制类小器件、位置等功能的开发。
  • 数据管理:数据库、分布式数据/文件服务、数据搜索等功能的开发。
  • 线程:线程管理、线程间通信等功能的开发。
  • IDL:声明系统服务和Ability对外提供的服务接口,并生成相关代码。

原子化服务开发历程

HarmonyOS除支持传统方式的需要安装的应用外,还支持提供特定功能的免安装的应用(即原子化服务),供用户在合适的场景、合适的设备上便捷使用。

原子化服务相对于传统方式的需要安装的应用更加轻量,同时提供更丰富的入口、更精准的分发。原子化服务的详细介绍请参见“原子化服务”。

其基本开发历程如下表所示。

表1 原子化服务基本开发流程

任务

开发历程

相关内容

了解HarmonyOS

了解HarmonyOS的系统定位、技术特性、应用开发的基本概念和基础知识,熟悉HarmonyOS应用开发通用流程。

设计原子化服务

在设计阶段,需要满足原子化服务的设计规范,包括图标、卡片、分布式等规范。

原子化服务设计

掌握原子化服务约束

了解原子化服务之间的调用管控机制。

三方应用调用管控机制

开发原子化服务基础体验

了解原子化服务总体开发规则、如何开发服务卡片等基础体验。

开发原子化服务分布式体验

了解如何开发流转、分享等分布式体验。

应用发布

发布流程

开发者完成HarmonyOS应用开发后,需要将应用打包成APP,用于发布到华为应用市场。发布应用的流程如下图所示。

关于以上流程的详细介绍,请继续查阅本章节内容。

准备签名文件

生成密钥和证书请求文件

HarmonyOS应用通过数字证书(.cer文件)和HarmonyAppProvision文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。

基本概念

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

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

  1. 在主菜单栏点击Build > Generate Key and CSR

    说明

    如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中点击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

  2. Key Store File中,可以点击Choose Existing选择已有的密钥库文件;如果没有密钥库文件,点击New进行创建。下面以新创建密钥库文件为例进行说明。

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

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

  5. Generate CSR界面,选择密钥和设置CSR文件存储路径。

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

使用命令行工具生成证书请求文件

使用Open JDK携带的Keytool工具生成证书请求文件。

  1. 使用管理员身份运行命令行工具。

  2. 切换到keytool工具所在路径,实际路径请根据安装目录进行修改。

  3. 执行如下命令,生成公私钥文件。例如,生成的密钥库名称为ide_demo_app.p12,存储到D盘根目录下。
     
      
    1. keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc

    生成公私钥文件的参数说明如下:

    说明

    请记录下alias、storepasskeypass的值,在后续配置签名信息操作会使用到。

    • alias:密钥的别名信息,用于标识密钥名称。
    • sigalg:签名算法,固定为SHA256withECDSA
    • dname:按照操作界面提示进行输入。
      • C:国家/地区代码,如CN。
      • O:组织名称,如HUAWEI。
      • OU:组织单位名称,如HUAWEI IDE。
      • CN:名字与姓氏,建议与别名一致。
    • validity:证书有效期,建议设置为9125(25年)。
    • storepass:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
    • keypass:设置密钥的密码,请与storepass保持一致。
  4. 执行如下命令,执行后需要输入storepass密码,生成证书请求文件,后缀格式为.csr。
     
      
    1. keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr

    生成证书请求文件的参数说明如下:

    • alias:与3中输入的alias保持一致。
    • file:生成的证书请求文件名称,后缀为.csr。

申请发布证书和Profile文件

通过生成的证书请求文件,向AppGallery Connect申请发布证书和Profile文件,详细操作请参考下表。

步骤

操作步骤

操作说明

操作指导

1

创建AGC项目

申请发布证书前,需要登录AppGallery Connect后创建一个项目。

说明

如果在申请调试证书时已经创建了项目和应用,则可以跳过“创建AGC项目”和“创建HarmonyOS应用”步骤。

创建您的AGC项目

2

创建HarmonyOS应用

在AppGallery Connect项目中,创建一个HarmonyOS应用,用于发布证书和Profile文件申请。

创建HarmonyOS应用

3

申请发布证书和Profile文件

在AppGallery Connect中申请、下载发布证书和Profile文件。

申请发布证书和Profile文件

用于发布的证书和Profile文件后,请在DevEco Studio中进行签名,请参考配置签名信息

配置签名信息

编译构建APP需要使用到制作的私钥(.p12)文件、在AppGallery Connect中申请的证书(.cer)文件和Profile(.p7b)文件。然后在DevEco Studio中对工程进行配置。

File > Project Structure > Project > 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 APP(s)/Hap(s) > Build APP(s),等待编译构建完成已签名的APP。
  2. 编译构建完成后,可以在build > outputs > app > release目录下,获取带签名的APP。

发布APP到华为应用市场

将HarmonyOS应用打包成APP后,通过AppGallery Connect将HarmonyOS应用分发到不同的设备上。可以根据发布HarmonyOS应用指导将APP上架到华为应用市场。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常见的比对两组数据的差异性的算法有: 1. Levenshtein Distance:也称为编辑距离,它可以计算出两个字符串之间的相似度,即最少需要进行多少次编辑操作(增删改)才能将一个字符串转换成另一个字符串。 2. Longest Common Substring(最长公共子串):可以计算出两个字符串中最长的相同的子串。 3. Longest Common Subsequence(最长公共子序列):可以计算出两个字符串中最长的相同的子序列。 4. Jaccard相似度:用于计算两个集合之间的相似度,其计算方法是两个集合的交集大小除以它们的并集大小。 下面是一个用 JavaScript 实现的 Levenshtein Distance 算法的例子: ```javascript function levenshteinDistance(s, t) { const m = s.length; const n = t.length; const d = []; for (let i = 0; i <= m; i++) { d[i] = []; d[i][0] = i; } for (let j = 0; j <= n; j++) { d[0][j] = j; } for (let j = 1; j <= n; j++) { for (let i = 1; i <= m; i++) { if (s[i - 1] === t[j - 1]) { d[i][j] = d[i - 1][j - 1]; } else { d[i][j] = Math.min(d[i - 1][j], d[i][j - 1], d[i - 1][j - 1]) + 1; } } } return d[m][n]; } ``` 调用该函数可以计算出两个字符串的编辑距离: ```javascript const s1 = 'kitten'; const s2 = 'sitting'; const distance = levenshteinDistance(s1, s2); console.log(distance); // 3 ``` 这个例子计算的是 `kitten` 和 `sitting` 之间的编辑距离,即将 `kitten` 转换成 `sitting` 需要进行三次编辑操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值