阅读 7637

国产鸿蒙2.0预览分析

鸿蒙开发者官网:https://developer.harmonyos.com/cn/home

鸿蒙应用开发文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/start-first-page-0000000000038014

鸿蒙API文档:https://developer.harmonyos.com/cn/docs/documentation/doc-references/overview-0000001054518434

真正的鸿蒙SDK API在 ohos.jar ,可以结合 鸿蒙API文档 查看。

开发语言有 Java,C/C++ ,JS 分别面向不同的开发场景,Java的开发体验跟Android基本一致,Android开发者可以无缝切入。

Hap是鸿蒙的执行文件,里面包含了一个 classes.dex 和 entry_signed_entry.apk ,entry_signed_entry.apk 是个壳子,目前看来它的作用就是用来调起 根路径下的 classes.dex 。

根路径的classes.dex里面的构建GUI的上层应用代码,基本脱离了AndroidAPI,但明显看出来是在仿着Android进行:

关于渲染引擎,官网只能找到资料是3D引擎支持 OpenGL 和 Vulkan, 2D 引擎没有看到任何资料,搞不好也可能是Skia,毕竟国内也没有成熟的好引擎,我们欠缺的太多了。

AIDL 仿了一个 IDL ,接口设计也类似,底层不知道也是仿着写的,还是直接复用了Android的机制。

JNI理论上应该支持,但是目前文档上没有看到介绍。

一些jetpack的东西,类似livedata 和 databinding的机制也仿了,线程操作引入了类似 RxJava的调度器机制。

没有什么高大上的东西,国内在操作系统领域跟国外技术代差太大了,只是新手在刷经验值的阶段,先模仿做好了,再想高大上的事情吧。

目前,看到或许是个优势的亮点,也就是超级虚拟终端的跨设备整合能力:

看文档介绍,这个能力可以让一个应用的A页面和B页面分别运行在不同的设备上,就好像在同一个设备上使用一样,能随便拖拽一个页面从A设备到B设备上,还可以继续使用,嗯,如果是这样的场景,还是挺香的。

再就是自己进行完整的系统设计,也是有优势的,例如,热更新能力想支持就能支持:

总的来说,按目前的资料看,鸿蒙就是仿了一个Android,进行艰难的国产化,三五年内想超越Android是不现实的,国内在操作系统这方面几乎等同于空白,能从仿一个开始起步,已经是最好的结果了。希望国产牛逼的,也要考虑到事物发展的定律,没有足够的积累,是无法横空出世一个厉害的操作系统的,罗马不是一天建成的。至少在现在这个阶段,完整的仿一个系统,按自己的理解进行重写,已经是一个好的开端了,系统层源码看不到,不清楚系统核心出来以后会是什么样,但至少现在,它迈出了第一步,应该给予鼓励和支持。

想要体验一下的,可以在官网直接下载 Huawei Dev Eco Studio ,直接新建Java版本的工程即可:

Huawei Dev Eco Studio 通过 IdeaA 改的,跟Android Studio 一样,使用方式相信做Android开发的同学都一看就懂。

目前鸿蒙开发的应用只能跑在鸿蒙机器上,手头没有鸿蒙机器,模拟器又不能用的情况下,只能使用华为的远程机器,通过 Tools -> DevEco Login 登陆华为开发者账户,再使用 HVD Manager 创建远程机器,就可以调试使用了。

成功连接远程鸿蒙TV设备:

成功运行我们用鸿蒙SDK编写的Demo:

再补充一下,现在华为的HVD Manager连接的服务还是个小水管,我昨晚下了100多遍才下载成功30M的插件。

开始都是10多Kb的速度,直到过了12点,可能下载的人少了,才到了100多Kb。

当你看到这个报错的时候:

不要慌,不是那个啥的梯问题,挂了外网也没用,反而会更慢,查了下网络连接也都是国内的服务,猜测就是它现阶段准备的带宽小水管太小,没想到这么多开发者一拥而上。

如果这种情况下,不能调试运行,也不要气馁。

虽然通过SDK的上层应用API发现已经跟Android切割了,但是可能鸿蒙的hap的打包体系还是借用Android的,使用Gradle打包,所以,我们的命令行依然是有效的:

windows:

gradlew.bat assembleRelease 
复制代码

Mac/linux:

./gradlew assembleRelease
复制代码

一样是可以打出来hap包的,这时候解包就可以对鸿蒙的应用进行剖析了。