天涯论坛

 找回密码
 立即注册
搜索
查看: 100|回复: 7

聊聊鸿蒙OS

[复制链接]

3038

主题

148

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99119143
发表于 2024-6-29 16:21:47 | 显示全部楼层 |阅读模式

导语

6月2日,HarmonyOS 2颁布颁布会上演示了非常多HarmonyOS炫酷的功能,超级终端,万能卡片,多端协作,是不是非常心动呢。

不仅新颁布的几款设备,非常多老的华为能够升级鸿蒙系统了,例如华为的Mate 40系列,Mate30系列, P40系列,MatePad Pro平板,华为智慧屏系列等,你的华为设备有升级鸿蒙呢。

能够去HarmonyOS官方博客中查看百机升级计划, 包含老荣耀的非常多设备都会升级到鸿蒙系统。

倘若已然有支持升级的华为手机,剧烈举荐升级到HarmonyOS,不必须担心兼容性问题,他是100%完全兼容安卓的。

此刻华为应用商店已然上线了“HarmonyOS”专区,大家能够去体验一下原生的鸿蒙App

日前还有有些应用虽然是Android app,然则支持HarmonyOS服务,这种日前重点支持的是鸿蒙的原子化服务,这类型服务在图标下面有一条横线,上滑就会弹出一个服务卡片,另一从手机左下角右下角上滑会显现服务中心,这儿能够展示和发掘所有原子化服务。

当然,这篇文章不会给你介绍哪些炫酷的功能,我想稍微深入一点去科研一下,例如HarmonyOS和OpenHarmony的关系,例如HarmonyOS和安卓的关系。先来简单介绍下HarmonyOS

HarmonyOS 简介

官网:

https://www.harmonyos.com/

研发者官网:

https://developer.harmonyos.com/

HarmonyOS 官方定义是一款“面向将来”、面向全场景的分布式操作系统;

HarmonyOS的特性能够从三个方面表现

#1

操作系统层面,一套操作系统代码,经过组件化的设计方法设计;能够按照设备特性和业务必须灵活定制剪裁;从而满足从耳机、穿戴、车机到智慧屏,手机等所有设备的需求。

#2

用户体验层面,经过超级终端,区别硬件协同、资源共享。

#3

研发者层面,分布式应用框架,一次代码,多端安排能够有效研发跨设备的应用

能够看出,HarmonyOS抓住了将来万物互联的发展趋势,着重打造的是分布式的,面向各样类型设备的系统。

OpenHarmony

都说HarmonyOS是开源的,其实并不准确事实上,HarmonyOS和开源的鸿蒙(OpenHarmony)并不完全相同。

OpenHarmony是开源版本的鸿蒙,一款捐给了开放原子基金会,任何个人和公司能够参与,此刻仍然是孵化周期

而HarmonyOS是华为基于OpenHarmony的商用的不开源的操作系统,日前仅华为运用

OpenHarmony是不兼容安卓的,里面任何安卓的东西。

而HarmonyOS是完全兼容安卓的,日前兼容的是Android 10的版本。

日前OpenHarmony 上面有232个开源仓库,据我下载了openharmony-2.0-canary的源码,代码体积是4.8GB,third_party是2.91GB,鸿蒙本身的代码是1.89G,据网络上统计总代码量根据行数鸿蒙的代码占20%,这已然是很高的比例了(据述AOSP中谷歌代码占15%)

日前OpenHarmony依旧处在孵化周期。在1.x的时候,OpenHarmony 还只能面向非常小的物联网设备, 而近期开源的2.0 Canary版本才增多了Linux内核,支持了全面的OS能力,支持大于128M的带屏设备的研发

详细能够参考OpenHarmony2.0更新日志:zh-cn/release-notes/OpenHarmony-2-0-Canary.md · OpenHarmony/docs - Gitee.com

B站UP主东方星痕运行了纯净的OpenHarmony的系统,能够看到OpenHarmony还是是非常简单的。

分析OpenHarmony的源码工程能够发掘,他此刻还只支持C/C++研发和js研发,并不支持java语言研发

例如开源的系统三大组件(桌面起步器、设置、systemui)都是html+js+css研发的。

源码中app_samples工程中虽然有非常多Java工程,然则都只支持在HarmonyOS中运行而不可在OpenHarmony中运行。详细参考他的Readme ,仅有少许js工程能在OpenHarmony中运行(common/JsHelloWorld和common/Clock)OpenHarmony/app_samples - 码云 - 开源中国 (gitee.com)

对应DevEco Studio 中的`Import HarmonyOS Sample)

从源码中得知,日前的OpenHarmony还不足作为一个手机系统,他只是从2.0起始能够研发标准系统设备罢了

因此倘若其他手机厂商想要基于OpenHarmony进行OS的研发,这可能必须非常海量的工作。单不兼容Android这一点,其他厂商就不可能在自己的手机设备中选取OpenHarmony,最少日前是不可能的。

另一选取HarmonyOS的可能性不是尤其大,由于HarmanyOS并不是开源的,因此各个厂商就很难供给个性化的服务,并且严重依赖华为。

分析HarmonyOS 和Android

鸿蒙OS的研发IDE是DevEco Studio(一样是基于Intellij IDEA Community研发,是标准的Gradle工程,支持Java和JS两种语言进行研发), 浏览一下API,做安卓的朋友应该非常容易上手,由于基本组件和UI这块的API和Android非常类似。

下载好IDE以后,还必须登陆华为研发者账号才可正常运用

这儿咱们从IDE 供给的Template中选取Shopping Ability(Java) 创建工程(仅支持HarmonyOS手机),创建好以后,要配置签名才可在真机上运行。这儿咱们直接分析编译包即可。

鸿蒙OS的安装包有两种,一种是hap,一种是app, app能够包括多个hap,然则只会有一个entry hap(主应用),其他的都是feature hap。这是一种模块化的思想。后面分发的时候,用户能够先只下载主hap,等待必须用到某些功能的时候再动态下载feature hap。

这个同Android 后面搞的 Android App Bundle类似。

将编译后的"entry-debug-rich-unsigned.hap" 后缀名改成zip包解压得到如下结果:

classes.dex,运用的是android 的dex格式

assets下面是所有的资源, HarmonyOS运用的是自己的一套资源二进制格式

config.json是配置文件(类似Android的AndroidManifest.xml文件)

1) AndroidManifest.xml是Android app中的配置文件,用来声明app运用的版本,权限、四大组件等

2) classes.dex 是安卓apk中java 代码编译后的产物,类似java 的class文件(理解成jar包行)

不外比较奇怪的是他里面有一个"entry_debug_signed_entry.apk"(apk是Android 安装包格式),一样分析一下他的源码:直接解压如下:

确实是一个标准的apk文件。

分析一下他的classes.dex和AndroidManifest.xml

瞧瞧名单文件:

Application类的实现是ShellMyApplication

有一个Activity是MainAbilityShellActivity

当前版本是api 29(便是Android 10)

运用jadx-gui查看classes.dex文件:

里面的内容非常简单,仅有以上两个类和一个R类,并且里面的实现非常简单:

ShellMyApplication继承自HarmonyApplication

MainAbilityShellActivity继承自AbilityShellActivity

咱们能够从HarmonyOS SDK 中看到看到HarmonyApplication和AbilityShellActivity对应的反编译以后的代码。

从这个abilityshell_ide_java.jar中能够看到,鸿蒙会把Android的三个组件(Activity,ContentProvider、Service)还有Application都套一层,而后转发给鸿蒙应用框架,最后由鸿蒙应用框架去执行。

那HarmonyOS定义的一整套全新的API是怎么运行的呢?这儿简单分析一下比较感兴趣的UI界面的运行径例。

运用Android Studio的Layout Inspector查看布局,如下:

全部核心界面只是一个AGPContainerView. 便是说HarmonyOS定义的整套UI都是绘制在一个View里面的,应该是类似Flutter的自绘制的方式。而不是类似RN那样,每一个界面元素映射到原生系统的一个View。

日前看来,HarmonyOS在手机中,不论是Android app还是鸿蒙app,都是以一个Android app的方式来运行的。

整体的原理是经过Android框架获取到所有底层必须的信息(便是兼容Android底层),而后转发给鸿蒙框架去运行。

全部鸿蒙App能够看成是一个插件化的Android app,区别是插件是一套完全不依赖Android 框架的模块。便是倘若咱们基于HarmonyOS框架研发的app,后续是完全能够脱离Android 环境的。Android 运行时只是日前鸿蒙app运行的宿主。

因此,我个人理解,其实在手机系统中,是Android app兼容鸿蒙app而不是鸿蒙app兼容Android app。咱们乃至能够直接把一个鸿蒙app导出为一个apk,然则这个apk在其他手机上是运行失败的,由于鸿蒙运行库。

因此,HarmonyOS 在手机上的方法是基于OpenHarmony(不是此刻开源的这个版本)再融合AOSP(Android 10版本)中的大部分组件加上华为的一系列服务的系统。

大众其实能够去设置->关于手机->法律信息里面查看开放源代码许可,里面有非常多的Android 开源。

不外华为这般日前最好的方法了。

首要有一套完全的应用框架和API出来,大众基于这套框架进行鸿蒙研发是完全不依赖Android api的,等到原生的鸿蒙应用越来越多,这般,后续就能够慢慢替换掉Android的部分。(不外这种的兼容方法,各个app厂商有多大的动力去研发鸿蒙原生app呢,毕竟鸿蒙原生app他不支持安卓呀。)

此刻Java的这套API日前还不支持OpenHarmony,因此OpenHarmony后面肯定还会开源3.0来支持这套API的,能够耐心等待,多给鸿蒙有些时间。其实不必讨论HarmonyOS是不是安卓套壳, 路要一步步走,操作系统是一个非常大的工程况且牵涉甚广, OpenHarmony还在孵化器, 只要基于OpenHarmony上下游的合作伙伴越来越多,HarmonyOS将来就会完全替换掉Android乃至手机系统替换掉Linux,这个是HarmonyOS必定会去做的。

参考文案

OpenHarmony 2.0和HarmonyOS颁布会快评

鸿蒙OS到底是不是Android套皮?(少bb,看源码!)

鸿蒙Harmony谈了这么久,和Android到底啥区别?

鸿蒙对标的是安卓吗?No

怎样给女伴侣解释什么是鸿蒙?

鸿蒙版APP已上线,比安卓小太多了!

作者简介

leoraylei(雷声伟)

基本科技制品部/终端研发





上一篇:小程序与公众号有什么区别
下一篇:HTML5/JS研发框架 Kendo UI超强学习资源集合,等你来体验!
回复

使用道具 举报

2

主题

419

回帖

4

积分

新手上路

Rank: 1

积分
4
发表于 2024-8-29 10:03:32 | 显示全部楼层
哈哈、笑死我了、太搞笑了吧等。
回复

使用道具 举报

3067

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158943
发表于 2024-10-3 13:16:17 | 显示全部楼层
我深感你的理解与共鸣,愿对话长流。
回复

使用道具 举报

3087

主题

2万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098778
发表于 2024-10-4 21:51:32 | 显示全部楼层
你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968643
发表于 2024-10-19 07:06:42 | 显示全部楼层
论坛的成功是建立在我们诚恳、务实、高效、创新和团结合作基础上,我们要把这种精神传递下去。
回复

使用道具 举报

3068

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138956
发表于 2024-10-30 15:18:38 | 显示全部楼层
外链发布论坛学习网络优化SEO。
回复

使用道具 举报

3087

主题

2万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098778
发表于 2024-11-12 10:42:40 | 显示全部楼层
软文发布平台 http://www.fok120.com/
回复

使用道具 举报

3087

主题

2万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098778
发表于 2024-11-13 01:56:56 | 显示全部楼层
你的见解真是独到,让我受益匪浅。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 13:03 , Processed in 0.367530 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.