0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发教程

王程 来源:jf_75796907 作者:jf_75796907 2024-01-31 17:11 947次阅读

去年8 月份华为发布会上,华为发布了HarmonyOS NEXT预览版,宣布不再兼容安卓应用。大家期待的纯血鸿蒙终于要来临了,next 预览版本现在已经开放申请渠道了,Next 开发者预览版本目前只向三款手机开放, mate 60、mate60 pro 和 mate x5。

什么是鸿蒙,他是 android 套壳吗?

鸿蒙是华为自研的操作系统,发布之初发现它上面也能兼容安卓应用,大家纷纷猜想鸿蒙系统可能又是厂商自己经过改造 android 套个壳发布是自研系统,尤其是他刚开始出那个鸿蒙开发的时候,大家发现代码包括开发方式都跟安卓很像,xml 布局、获取控件等等。鸿蒙系统之所以能够兼容安卓是因为其采用了分布式技术架构,并且通过HarmonyOS Runtime虚拟机环境来支持运行基于Java语言开发的安卓应用程序。大家发现在鸿蒙 OS 上运行的应用比别的手机快呢,是因为鸿蒙 OS采用微内核+AOSP(安卓系统)双架构。对ART(Android Runtime)模式做了一个重要的优化升级。那就是方舟编译器替代了AOT(提前编译)编译器。方舟编译器是基于AOT编译器开发而来,但完全摆脱了java虚拟机的机制,将高级语言的字节码提前编译成二进制代码,让CPU直接运行二进制机器码,运行速度提升了60%。以往 android 那套 dex 机制反而落后。

微内核与宏内核

HarmonyOS NEXT完全舍弃 AOSP 直接采用微内核单架构。微内核和宏内核大家可以自己去深入了解一下。我就简单的描述一下,android 就是传统的宏内核,它将所有的核心功能(文件系统、内存管理、设备驱动等)都放在一个单一的执行空间内。这意味着所有的系统服务和功能都运行在内核的上下文中,彼此之间共享同一个地址空间,这样做的好处是所有的服务都在一起,交互更加直接,坏处就是一个服务崩溃会影响到其他所有 的服务。现在鸿蒙 4.0 其实完全跟 android 脱钩了,他只是有双架构支持一下跑一下 Android。鸿蒙采用的是微内核。尽可能的保持内核的功能最小化,只保留一些最基本的服务,其他的系统功能和服务都放在用户空间,这样做的好处就是他的稳定性和可靠性上来了。而且提供服务裁剪,在不同的设备上部署不同的服务,微内核虽然增加了一些性能开销。但是在这个性能过剩的时代里面。其实这个开销基本可以忽略

应用程序框架(Stage 模型)

wKgZomW6DmuAd-4zAAQoLjbXW7Y454.png

HAP:OpenHarmony应用编译、分发、加载的基本单位。与开发态的module一一对应。在应用内,moduleName是其唯一标识;

Bundle:通过appid标识的OpenHarmony应用,Bundle可以包含多个HAP,每个应用都有一个bundleName,但是bundleName并不能唯一标识一个应用,appid中包含bundleName以及其他的更多信息,能够唯一标识一个应用;

AbilityStage:对应HAP的运行期对象,在HAP首次加载到进程中时创建,运行期开发者可见;

Application:对应Bundle的运行期对象,运行期开发者不可见;

Context:提供运行期开发者可以调用的各种能力,Ability组件和各种ExtensionAbility都有各自不同的Context类,他们都继承自基类Context,基类提供包名、moduleName、路径等信息;

Ability:提供生命周期回调,持有AbilityContext,支持组件的跨端迁移和多端协同;

ExtensionAbility:基于场景的扩展能力统称,系统定义了多种场景的ExtensionAbility类,它们持有各自的ExtensionContext;WindowStage:本地窗口管理器;

Window:应用窗口,持有一个ArkUI引擎实例;

ArkUI Page:基于ArkUI开发的用户界面。

AbilityStage(开发者关注)

API9 之前是另外一种模型叫 FA 模型,这个我们先不讲。我们来看 Ability,它 是 应用程序框架中最基本的抽象单位,是能够完成独立功能的应用组件。一个应用可以是一个 Ablity 也可以是多个 Ability 组成。我们在开发的过程通常都是分功能模块来开发的,每一个功能模块就是一个 Ability。在鸿蒙开发里面每一个 module 都是可以单独打包成 HAP 文件独立运行,也可以多个 hap 打包成一个 app pack 来运行。举个例子,如果我们来开发抖音的短视频模块和电商模块。电商模块是比较独立的一个功能,那我们可以用两个 Ability 来完成一个抖音应用,也可以单独发布一个纯净版的短视频版 抖音,不包含电商的功能

很多人问过我 Android 的 Activity跟鸿蒙的 UIAbility 是不是类似的东西,其实他们两个的思想是类似的,都是用于用户界面展示和用户交互的组件,简单点理解可以认为ArkUI Pgae就相当于 Fragment,一个 Ability 就是一个 “Activity”,现在 Activity 放入一个 fragment就相当于Ability 在他的WindowStage创建的时候load 了一个ArkUI page

wKgaomW6DnSAe1j2AAWNst__3Lc301.png


Ability加载一个 page
Ability 的层级比 Activity在 android 应用里面的层级要高一个层级,我们都知道每一个 Activity 要在 manifest 里面去注册,而在我们的 Ability 里面,每一个 page 是要注册注册在我们自己模块下面的 main_pages.json下面的。Ability 的页面跳转是通过路由的方式来跳转的,通过导入 router 包,调用 router.pushUrl(“页面路由")来跳转。同时各个页面之前还可以进行数据通讯,这么一看,好像鸿蒙里面的 ArkUI Page 是不是也像一个 Activity。讲到这里,大家应该可能觉得Ablity 好像也承担了一部分 Android 里面 Application 的功能。所以归根到底它们俩不是同一个东西,正好印证了我们前面所说的 Ability 是完成独立功能的应用组件。而不仅仅只是一个页面,里面放了很多 View。有想了解更多的可以关注一下这篇文章,链接丢上来文章会被锁,大家可以搜索这个关键词

harmony(鸿蒙)Stage模型综述

Harmony OS与 OpenHarmony

引用一下 ChatGpt上面的解释

wKgaomW6DpeAMRD_AAg7r2juA34171.png

OpenHarmony是华为提取了Harmony OS 的基础功能进行开源的一个操作系统,是 Harmony OS 的基础版本。可以理解为它是 Android 的某一个版本,比如 Android 14.那么 Harmony OS 就是华为自己根据 Android 14 定制的一个服务于自己手机的一个操作系统,目前华为鸿蒙的专用开发工具 DevEco Studio自带 Harmony OS SDK。所以我们如果是基于华为设备进行开发的话,只需要关注Harmony OS 的开发即可。如果想使用 ArkUI-X构建跨平台应用可以下载官方OpenHarmony SDK进行开发

这一篇我们讲了一下鸿蒙系统为什么不是 Android 套壳还能跑 android 的原因,也介绍了一些初步的鸿蒙系统的一些知识,后续的文章我会正式开始更新 TS、ArkTS、ArkUI以及 ArkUI-X构建跨平台应用的相关文章,喜欢的朋友多多点赞。大家一起学习,一起进步

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AOSP
    +关注

    关注

    0

    文章

    16

    浏览量

    6270
  • 鸿蒙
    +关注

    关注

    57

    文章

    2411

    浏览量

    43304
  • HarmonyOS
    +关注

    关注

    79

    文章

    1987

    浏览量

    31118
收藏 人收藏

    相关推荐

    【「极速探索HarmonyOS NEXT 」阅读体验】 一本书开启了鸿蒙开发的整个生态资源

    接前面我的阅读体验关于文章的介绍,这几天拜读了《极速探索HarmonyOS NEXT ** **纯血鸿蒙应用开发实践》这本书,书中的内容很精彩,但是书的篇幅毕竟有限,于是很想在阅读书的同时,了解书中
    发表于 03-06 11:44

    【「极速探索HarmonyOS NEXT 」阅读体验】 初印象:一本纯血鸿蒙应用开发入门的好书

    非常有幸的于近日收到了电子发烧友寄来的《 极速探索HarmonyOS NEXT **** 纯血鸿蒙应用开发实践》这本由清华大学出版社出版的一本纯血鸿蒙应用开发学习的一本好书。 书籍一共
    发表于 03-04 12:41

    DevEco Studio构建分析工具Build Analyzer 为原生鸿蒙应用开发提速

    在原生鸿蒙应用开发过程中,随着项目复杂度的增加,开发者花费在构建上的时间越来越长,导致开发效率降低。为了帮助开发者解决构建效率的问题,华为在
    发表于 02-17 18:06

    名单公布!【书籍评测活动NO.56】极速探索HarmonyOS NEXT:纯血鸿蒙应用开发实践

    开发的核心技术,以及鸿蒙应用在实际开发中的应用方法。 本书共分为四篇,共计16章,分别为鸿蒙开发基础篇、
    发表于 01-20 16:53

    鸿蒙开发:线程模型

    FA模型下的线程主要有如下三类
    的头像 发表于 06-24 17:27 532次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:线程模型

    鸿蒙开发:停止PageAbility

    停止PageAbility通过featureAbility中的terminateSelf接口实现。
    的头像 发表于 06-18 14:16 391次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:停止PageAbility

    鸿蒙开发:创建PageAbility

    通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会在app.js/app.ets中默认生成onCreate()和onDestroy()方法,其他方法需要开发者自行实现。
    的头像 发表于 06-18 09:36 326次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:创建PageAbility

    鸿蒙开发:【线程模型】

    管理其他线程的ArkTS引擎实例,例如使用TaskPool(任务池)创建任务或取消任务、启动和终止Worker线程。
    的头像 发表于 06-13 16:38 519次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:【线程模型】

    鸿蒙开发:【进程模型】

    应用中(同一Bundle名称)的所有UIAbility、ServiceExtensionAbility和DataShareExtensionAbility均是运行在同一个独立进程(主进程)中,如下图中绿色部分的“Main Process”。
    的头像 发表于 06-13 09:53 375次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:【进程模型】

    鸿蒙开发就业前景到底怎么样?

    鸿蒙, 作为华为自主研发的基于微内核的下一代操作系统,正在逐渐走进人们的视野 。随着鸿蒙系统的不断发展和完善,越来越多的人开始关注鸿蒙开发这一领域,想要了解学习
    发表于 05-09 17:37

    36岁了还有必要转行鸿蒙开发吗?

    前言 2024鸿蒙生态圈越来越大,有必要转行做鸿蒙开发吗? 我想这是很多程序员都存在的疑虑吧? 我的回答是:“当然有必要!”话不多说,请看图! 不难看出,很多公司给出了百万年薪做鸿蒙
    发表于 05-09 17:01

    鸿蒙OS崛起,鸿蒙应用开发工程师成市场新宠

    应用的形态也在发生着翻天覆地的变化。作为全球领先的移动操作系统和智能终端制造商,华为公司自主研发的鸿蒙OS应运而生,致力于构建一个统一的分布式操作系统,为各行各业的应用开发带来全新的可能性。 一、鸿蒙
    发表于 04-29 17:32

    鸿蒙OS开发学习:【尺寸适配实现】

    鸿蒙开发中,尺寸适配是一个重要的概念,它可以帮助我们在不同屏幕尺寸的设备上正确显示和布局我们的应用程序。本文将介绍如何在鸿蒙开发中实现尺寸适配的方法。
    的头像 发表于 04-10 16:05 2026次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>学习:【尺寸适配实现】

    鸿蒙开发实战:基于【Markwon】移植和开发

    本项目是基于开源项目**Markwon**进行适用harmonyos的移植和开发的。
    的头像 发表于 03-25 16:27 935次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>实战:基于【Markwon】移植和<b class='flag-5'>开发</b>

    鸿蒙开发实战:【Hdf Framework】

    该仓主要存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
    的头像 发表于 03-21 20:29 679次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>实战:【Hdf Framework】