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

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

3天内不再提示

鸿蒙开发教程

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

去年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

    浏览量

    6195
  • 鸿蒙
    +关注

    关注

    57

    文章

    2335

    浏览量

    42794
  • HarmonyOS
    +关注

    关注

    79

    文章

    1972

    浏览量

    30123
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发:创建PageAbility

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

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

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

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

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

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

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

    零基础小白适不适合学鸿蒙开发

    在互联网不断发展以及万物互联时代的开启过程中,鸿蒙操作系统的出现无疑是技术领域的一次重大突破。鸿蒙操作系统是一款“面向未来”的操作系统,它创造性地提出了三大技术理念:一次开发,多端部署;可分可合
    的头像 发表于 03-04 17:50 1933次阅读
    零基础小白适不适合学<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>?

    2024鸿蒙开发,势在必行

    要说2024年IT行业出现最多的一个词,那就不得不提到"鸿蒙"。 在这一个万物互联的时代,机遇与挑战并存。预测在2025年,全球物联网终端连接数量将达246亿个,其中消费者物联网连接数量将达110亿
    的头像 发表于 02-22 14:27 790次阅读
    2024<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>,势在必行

    未来从事鸿蒙开发?是否会有前景?

    鸿蒙的未来发展肯定很有前景的,鸿蒙作为新出的国产操作系统。它不仅只是手机操作系统,鸿蒙的出发点就是万物互联。包含原生应用开发、车载、智能设备、数码、智能家居家电等等。如此大的市场分布,
    发表于 02-19 21:31

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的
    的头像 发表于 02-02 16:09 848次阅读
    使用 Taro <b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>开发</b>指南

    鸿蒙开发用什么语言?

    两种开发方向 我们常说鸿蒙开发,但是其实鸿蒙开发分为两个方向: 一个是系统级别的开发,比如驱动,
    的头像 发表于 01-30 16:12 1524次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>用什么语言?

    鸿蒙开发【设备开发基础知识】

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 1001次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>【设备<b class='flag-5'>开发</b>基础知识】

    现在加入鸿蒙开发咋样

    现在加入鸿蒙开发咋样? 各位前辈, 现在加入鸿蒙开发还有前景吗?
    发表于 01-29 18:07

    鸿蒙开发OpenHarmony组件复用案例

    ) } }, item => item) } } } 本文主要是对鸿蒙开发基础当中的OpenHarmony技术组件复用示例, 更多鸿蒙开发OpenHarmony技术可以在主页
    发表于 01-15 17:37

    鸿蒙开发基础-Web组件之cookie操作

    }) ... } ... 本文章主要是对鸿蒙开发当中ArkTS语言的基础应用实战,Web组件里的cookie操作。更多的鸿蒙应用开发技术,可以前往我的主页学习更多,下面是一张
    发表于 01-14 21:31

    为何大厂急招鸿蒙开发工程师?别有洞天

    正确看待鸿蒙不再兼容安卓版本,而大厂急招鸿蒙工程师这一举动已经是预料之中的。我们一步步来看鸿蒙是怎么发展过程的。为什么互联网大厂急招鸿蒙开发
    发表于 01-08 19:59

    鸿蒙开发南向环境搭建教学

    南向开发环境搭建教学,更多鸿蒙开发资料可以前往高清完整版 《鸿蒙开发4.0基础-高阶文档》找保存。(附鸿
    发表于 01-05 16:38