HarmonyOS到底是不是Android套皮?

HarmonyOS到底怎么实现的——扒皮HarmonyOS

了解一个软件怎么实现的,最好还是查看源代码。

但是承诺2020年开源的OpenHarmony项目到现在只开源到嵌入式设备,这条路自然走不通。

只好退而求其次,看看已经开放的SDK、IDE、开发示例、编译产物,管中窥豹一下HarmonyOS到底怎么实现的。

00 安装IDE-配置环境-编译运行这部分很简单,下载DevEco Studio,然后照着文档一步步操作就好了。

模板选择了唯二的JS模板:Phone > Refresh Feature Ability。

然后一直下一步,申请下虚拟机,编译运行就成功了。

01 分析编译产物运行成功后,先大致分析一下编译产物,找一下程序入口,看看代码到底怎么运行的。

点开build文件夹,打开一看,喔噢!!!这目录结构和Android的太相似了,于是我熟练的点开outputs文件夹找apk文件。

.hap???怎么和预想的不一样?不过侵淫Linux多年的经验告诉我,后缀都是浮云,于是果断把.hap改成.apk,然后用Android Studio打开,果然:

对比官方给出的App逻辑视图:

我们发现:

1、没有找到描述每个HAP属性的pack.info

估计是因为工程只定义了一个Entry,没有定义Feature,于是只生成了Entry的安装包,但是按照官方文档给的说法

Entry可以独立安装运行,在只定义一个Entry的情况下,编译出这种包也说得通

2、App逻辑视图中的config.json正常在

3、App逻辑视图中的abilities竟然编译成Android包的.dex执行文件,而用js定义的界面、视图、逻辑竟然归入assets中,这里面就有点猫腻了

4、编译的可执行文件中竟然包含一个.apk文件,这个不速之客可在App逻辑视图中完全没体现,值得怀疑

于是接下来,我们就先重点分析这个entry_signed_entry.apk,分析一下这个不速之客在App安装包里有什么作用

02 分析entry_signed_entry.apk继续用Android Studio打开这个文件

是一个标准的Android App!!于是熟练的点开Android应用描述文件:AndroidManifest.xml

通过描述文件可以发现,整个apk只做了两件事:

定义Application为ShellApplication

定义MainActivity为MainAbilityShellActivity

emmmmm……这名字起得真直白

按照Android开发的惯例,从build文件夹中找这两个类的相关文件。

果然不费吹灰之力,接着分析源代码:

先分析一下Application的定义文件ShellMyApplication:

ShellMyApplication继承自HarmonyOS SDK的AceHarmonyApplication,不过啥事都没干,接着看AceHarmonyApplication:

emmmmm……俄罗斯套娃吗?照样啥事也没干,那就接着找它的父类:

HarmonyApplication:

看这么大段的引用和变量定义,应该是正主没错了,不过HarmonyOS的HarmonyApplication竟然继承自Android的Application,这件事就得说道说道了HarmonyApplication整个文件很长,就不贴代码了,这个类主要做了如下几个工作:

1、初始化HarmonyOS应用…

2、输出HarmonyOS应用开始初始化的日志…

3、加载HarmonyOS的Ability到Android的Application的HashMap中…

4、接收系统产生的各种事件然后转发给鸿蒙应用…5、初始化一个EventRunner,结合ohos包的代码来看,估计就是官方文档提到的「分布式软总线」,是HarmonyOS所谓的「分布式设计」的相关实现,这部分后面分析

码农果然都是老实人,起名都这么实诚又恰如其分:

ShellApplication的作用就是Android的Application提供一个Shell(壳),让HarmonyOS的Application寄生其中

接着来看看MainAbilityShellActivity,依旧是套娃设计,直接看具体的实现:

MainAbilityShellActivity依旧继承自Android的Activity,整个文件依旧很长,但是逻辑很简单,就一个作用:

将Android的MainActivity的生命周期、Intent、触摸事件、按键时间、权限申请结果……通过AbilityShellActivityDelegate(代理)转发给HarmonyOS的Ability

果然不负Shell之名。本来想打开Androi……HarmonyOS的应用布局调试界面,但是设置里找不到了,233333……

不过根据我的第一个鸿蒙app,以及所见内容,得知

这篇文章2020年末写的,到如今只过去五个月,估计具体实现没有改变。

03 分布式软总线HarmonyOS最大的卖点是其宣称的「面向万物互联时代的全场景分布式操作系统」,也是其最大的特性。

从官方文档来看,不管是开发层面所谓的「分布式设备虚拟化」、「分布式数据管理」、「分布式任务调度」,还是目前官方演示的「无缝流转」、「多屏协同」都是以「分布式软总线」为通讯基座,因此我们重点来找找它是怎么实现的。

具体到开发文档中,没有发现关于「分布式软总线」的API,只找到三个与其「分布式技术」所描述的特性相似的三个功能:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值