OpenHarmony 2.0-canary与手机上运行Harmony OS不同,canary是全新的系统,与AOSP没有任何关系。
应该可以肯定,canary是个完整的系统,目前已经支持运行于Hi3516DV300开发板,
Hi3516DV300开发板的配置:DDR3 1GB、EMMC 8GB,Soc搭载 双核Cortex-A7 MP2 @900MHz处理器、高性能NNIE引擎,1.0Tops算力
基本上是一个iphone4手机的配置。
可以接入touchscreen,并且已经自带如下hap应用可以运行:
./out/ohos-arm-release/packages/phone/system/app/Shopping_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/Ecg_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/Gallery_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/SystemUI-NavigationBar.hap
./out/ohos-arm-release/packages/phone/system/app/Settings.hap
./out/ohos-arm-release/packages/phone/system/app/SystemUI-StatusBar.hap
./out/ohos-arm-release/packages/phone/system/app/Clock_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/Flashlight_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/Launcher_Recents.hap
./out/ohos-arm-release/packages/phone/system/app/Launcher.hap
./out/ohos-arm-release/packages/phone/system/app/Calc_Demo.hap
./out/ohos-arm-release/packages/phone/system/app/Airquality_Demo.hap
canary中有窗口、UI、应用程序、多媒体服务,毫无疑问这个系统完全可以替代android,运行在手机上,不过需要手机厂商基于hdf开发自己的硬件驱动,然后重新编译。
canary应用开发只支持js,可以使用开发工具deveco开发,这个工具支持js和java(java是用来开发Harmony OS上的应用)。
内核上有linux-4.19 liteos_a liteos_m,编译时指定–product-name会自动选用对应config.json中配置的kernel_type,3516开发板用的liteos_a。
也就是说可以不用linux内核,也能直接编译对应的系统,烧写在手机上运行。
对于liteos_a,非kernel人员,查看drivers,只有一个char,推测为微内核,看名字也是个微内核(lite):
HP-EliteDesk-800-G3-SFF:~/basecode/HarmonyOS/code-2.0-canary/kernel/liteos_a/drivers$ ls
char
对于目前手机上运行的Harmony OS:
可以简单理解为Harmony OS=OpenHarmony 2.0-canary+鸿蒙framwork+AOSP
- 为什么有AOSP:
这个已经很明确了,目前无法脱离android生态,所以必须要有AOSP,否则Android App无法运行,api接口找不到。
- 鸿蒙framwork是什么:
这部分华为没有公布,但是根据目前开发工具deveco下载的java SDK,其中的api接口与android完全不同,注意根本不是改包名这么简单,
刚才说了canary只支持js,因此这里推测鸿蒙是有一套java的framework用以支持java开发,当然这部分代码没有开源,只能猜测,也可能有更好的技术方案。
- 既然canary与AOSP完全无关,Android App是如何兼容的:
这部分比较复杂,有以下两点,第一点是推测,第二点应该是确定的:
1)Java API部分:
因为要兼容Android App,首先要保证API接口一致,然而这里面又有一套鸿蒙自己的一套java sdk,因此可以推测存在如下转换调用:
Android App API->鸿蒙java sdk api->鸿蒙framwork->canary native层
纯属推测,可能有更高级的办法。
2)Native部分:
Android App除了java部分,还有Native的直接调用,包括bin程序及jni调用的so等,这块在canary中是存在的,可以确认是用以兼容Android App Native部分的调用的:
HP-EliteDesk-800-G3-SFF:~/basecode/HarmonyOS/code-2.0-canary/prebuilts/aosp_prebuilt_libs$ ls
asdk_libs host_tools LICENSE minisys update_prebuilts.sh
里面有./asdk_libs/ndk/sysroot/usr/include/linux/android/等等,足以说明这部分native是用来适配Android App Native的。
- 生态:
目前支持js及java两种开发:
在canary上只支持js开发。
在HarmonyOS上支持java开发,即使用android sdk的app,或是使用鸿蒙java sdk开发的hap/app都能运行在手机上。当然要想完全脱离android,生态还是需要使用鸿蒙java sdk开发。
在应用生态上,华为可能是有以下两个两种开发方式
对于轻量级的系统上,用js开发。
对于手机平板或是电视上,支持js及java开发。
这样推测下来,将还会有代码公布,JAVA SDK的这部分代码,或是猜想的鸿蒙framework是要公布的,否则无法定制。