鸿蒙OS是一个最初就计划用于替换安卓的系统,但过程有些艰辛和复杂。考虑到最近的混乱越来越多了,包括我自己也一度弄混了很多内容。尽管为了保证正确性我请教了一些大佬,但仍然可能有错漏之处,也欢迎指出。
(已经根据评论区留言、开发者群其它大佬的论述做了补充)
关系简略示意图,没有画liteos部分,harmony kernel是传言会上对于开发者来说更加清晰:
安卓开发者使用Android Studio(当然你也可以用上古的eclipse去搞古代版本Android),配合Android SDK开发APK;鸿蒙开发者使用DevEco,配合两种Harmony的SDK,开发两种HAP。
最终形态我预估是这样:
就像现在的Android也可以跑部分exe一样,也许以后HarmonyOS Next会有民间大神做安卓的支持,这个理论上可行。
鸿蒙概念阶段
这个时候大家思想都还没有统一,“鸿蒙”这个名字甚至都是自媒体扒出来的。但是自从众所周知的事情发生后,这个概念就不得不硬上。
任何一个操作系统的拿出来都不可能是“分分钟”的事情——写代码要时间的,测试啥的也要。
这一时期最大的误解就是:分分钟能拿出来
实际情况:分分钟能拿,只能一点
但这个阶段也比较重要,起码得先有个思路才知道要做什么。
鸿蒙1
这个阶段其实只有OpenHarmony 1.0,而且主要还是liteos改。Liteos是华为用在路由器等iot设备的操作系统,我们可以在OH1.0看到kernel是liteos的两个不同尺寸:
包含两个liteos内核这一阶段造成的主要误解就是:鸿蒙是给路由器/iot设备用的
真实情况是:鸿蒙的完全体还没开发完,只拿出了liteos部分
这个阶段的鸿蒙和现在的小米vela是类似的:鸿蒙是基于过去自家的liteos,vela是基于开源的nuttx——这俩都是iot os。oh1.0的代码包只有225MB[1],nuttx的代码包约54mb[2],一个数量级。
鸿蒙2
这个阶段手机叫HarmonyOS 2,正式改名。此时的手机鸿蒙是双框架——同时支持AOSP的APK和鸿蒙的HAP格式,带有OpenHarmony,但是其中后者只有开发者用DevEco才能在手机上运行,所以事实上鸿蒙2是“真鸿蒙”但是“未启用”的状态。
这种状态造成的最大尴尬是,你说这是鸿蒙,那鸿蒙HAP生态默认不开启;你说不是鸿蒙,但又具备完整的鸿蒙能力。这种尴尬类似于“九岁的男孩是不是男人”一样……
包含三个内核这个阶段的最大问题是因为安卓只能运行APK,所以HAP格式解压缩后需要有一个APK的入口(并非软件实体)。同时根据评论区可知,部分api的实现是通过映射aosp实现的,这不意外。另一位开发者透露,通过对代码进行追踪,当时的java代码是通过安卓实现的,这也合理。
OpenHarmony的HAP没有这个问题。
这造成了广泛的误解:鸿蒙app是套壳安卓app
真实的情况是:临时为开发者能在手机鸿蒙上运行而做的入口和映射,包中APK并非程序本体
DevEco使用的SDK中并不包含Android SDKDevEco其实可以佐证这个不是APK套壳——想要编译出完整的APK需要Android SDK,但DevEco使用的HarmonyOS SDK并不包含Android SDK,具体的文件都是清晰可查看对比的。
这个阶段的最大问题是,API本身的不稳定——这对开发者来说不是特别友好,但也是技术探索中的必要弯路。这个阶段的OepnHarmony已经初步能刷到开发板、带有桌面了,源代码6GB,容量是上一阶段的30倍。
鸿蒙3
这个阶段手机叫HarmonyOS 3。仍然是双框架,更加成熟。
OpenHarmony的HAP已经基本成熟,解压缩HAP就是正常的样子:
HAP和APK一样是个压缩包我们打开westinyang大佬开发的F-OH.hap,里面的ets就是extend typescript的意思,是这个app的可执行部分。鸿蒙使用arkTS,是由typescript添加鸿蒙特性得到,整体还是JS/TS,非常适合低成本开发APP。
ets文件夹打开后就是个abc文件安卓APK核心代码是dex文件尽管这时候可以推进鸿蒙HAP生态了,但是这时候由于华为使用高通芯片没有驱动,OpenHarmony是否能部署到高通芯片上取决于高通,仅有已经停售的高通芯片高通会开放驱动以供开发者自行匹配。此时的华为消费者业务萎靡不振,软件厂商配合的意愿也要打问号。
误解:写了完整的操作系统就能上手机
实际情况:需要考虑芯片的驱动问题,芯片驱动由芯片设计者提供
鸿蒙4
这个阶段的鸿蒙仍然是双框架,OpenHarmony已经演进到API10——非常成熟的系统了。这个阶段华为推出了鸿蒙next,top200的app在推进适配。
根据开发者提供的消息,api9以后的hap在手机鸿蒙4上不再有apk入口,而是由鸿蒙4动态生成一个apk入口。这也是安卓底座带来的妥协,鸿蒙next将不会有此种妥协。
这个阶段理论上已经可以放弃aosp,但是放弃aosp后没有应用,毕竟top200在适配中,HDC2023也演示过部分已经适配的应用。
随着华为Mate60的发布,厂商的适配意愿也开始恢复。但开发需要时间,所以鸿蒙4仍然还是和2、3一样,带有一个仅开发者可以用的OpenHarmony——当然,成熟程度更高了。这个阶段最大的问题就是厂商适配需要点时间,毕竟大型应用的移植、测试都需要时间。
至于传言中的“APK2HAP”,我觉得难度有亿点点大,但也不是完全不可能,只不过现在应该没有完整的这种工具。
这个阶段的误解:分分钟移植
实际情况:移植并没有很容易
鸿蒙next
关于鸿蒙nt,只有一些传言,不一定准,大家看着图一乐就行:
- 传说没有任何对安卓的官方支持
- 传说使用自研kernel,虽然我不觉得这很重要,用户层面感知不强
- 传说支持侧载,权限比安卓更严格,但比iOS略开放
windows经历过一次内核更换,但用户层面感知不强鸿蒙next也有pc版本这个确定,不过估计还是要绑定麒麟芯片(也可能是鲲鹏,总之是华为自己的芯片),不然驱动很难解决。当然,如果第三方愿意开发驱动,那HDF是做好了的,可以给鸿蒙开发驱动。
现阶段的鸿蒙next开发者版本根据评论区可知是linux内核,这也不意外。
写在最后
搞营销归搞营销,鸿蒙整个发展过程中是拿出了正经的代码的,就像程序员总说的“talk is cheap,shou me the code”。Openharmony拿出了代码、网友大佬们做出了适配小米6、一加6t的刷机包,在这点上是说得过去的。
一位OpenHarmony开发者如此评价:自从看到3.2的OpenHarmony出来以后,就感觉到华为多年负重前行,格局很高,野心也很大,我才会更感兴趣。一直在孕育这个OpenHarmony,直到有一天它能独当一面,再完全切换过去——这个太不容易了,敢想敢干。
而且OpenHarmony生态得到了一定的支持。
鸿蒙未来可期。
参考
- ^鸿蒙各版本的代码包 https:///openharmony/docs/blob/OpenHarmony-3.1-Release/zh-cn/release-notes/Readme.md
- ^nuttx代码下载页面 https://nuttx./download/