[特殊字符][特殊字符] HarmonyOS相关实现原理聊聊![特殊字符][特殊字符]

Hey小伙伴们~ 今天咱们来聊聊HarmonyOS的实现原理吧!🤔💡 虽然直接看源代码是最直接的方式,但是OpenHarmony项目的开源进度有点让人捉急呢... 不过没关系,我们可以通过已经开放的SDK、IDE、开发示例和编译产物来一探究竟!🔍✨

1️⃣ ‌安装IDE & 配置环境 & 编译运行‌ 📦💻

这部分还算简单啦,下载个DevEco Studio,照着文档一步步操作就OK啦!👌 我选了个JS模板:Phone > Refresh Feature Ability,然后一直下一步,申请个虚拟机,编译运行就成功啦!🚀

2️⃣ ‌分析编译产物‌ 🔍📁

运行成功后,先瞅瞅编译产物,找找程序入口。点开build文件夹,咦?.hap文件?这和我想的不太一样呢!🤔 不过没关系,把.hap改成.apk,用Android Studio打开看看!👀

对比官方给出的App逻辑视图,我发现了几个有意思的点:

没有找到描述每个HAP属性的pack.info,可能是因为只定义了一个Entry。

config.json是正常的。

abilities竟然编译成了Android包的.dex执行文件,js定义的界面、视图、逻辑都归入了assets中。

编译的可执行文件中竟然包含一个.apk文件!这个在App逻辑视图中完全没体现呢!🤔

3️⃣ ‌重点分析entry_signed_entry.apk‌ 🔍📱

继续用Android Studio打开这个文件,发现它是一个标准的Android App!😮 通过描述文件AndroidManifest.xml可以发现,整个apk只做了两件事:定义Application为ShellApplication和定义MainActivity为MainAbilityShellActivity。这名字起得可真直白呢!😅

接着分析源代码:

ShellMyApplication继承自HarmonyOS SDK的AceHarmonyApplication,不过啥事都没干。

AceHarmonyApplication也啥事没干,继续找它的父类HarmonyApplication。

HarmonyApplication可是正主啦!它主要做了初始化HarmonyOS应用、输出日志、加载Ability到Android的HashMap中、接收系统事件转发给鸿蒙应用等工作。而且!HarmonyApplication竟然继承自Android的Application!😲

4️⃣ ‌揭秘HarmonyOS的"分布式设计"‌ 🌐💻

在HarmonyApplication中,还初始化了一个EventRunner,结合ohos包的代码来看,估计就是官方文档提到的「分布式软总线」,是HarmonyOS所谓的「分布式设计」的相关实现啦!🤔

5️⃣ ‌ShellApplication & MainAbilityShellActivity的作用‌ 🛡️💪

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

MainAbilityShellActivity的作用就是将Android的MainActivity的生命周期、Intent等通过代理转发给HarmonyOS的Ability。

好啦,今天的分享就到这里啦!希望对你们有所帮助哦!💖 如果有任何问题或者需要更多的帮助,随时告诉我哈!💬

相关推荐
YM52e3 小时前
鸿蒙ArkTS实战项目 - 门店陈列巡检台:巡检卡片与多列切换实现
学习·华为·harmonyos
lilian2334 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
HwJack209 小时前
UIAbility 生命周期全链路:从冷启动到热启动的实战笔记
笔记·华为·harmonyos
梦想不只是梦与想10 小时前
鸿蒙 AppGallery Connect:应用创建(二)
harmonyos·appgallery·创建应用
●VON12 小时前
芯笺 Markdown:面向 HarmonyOS PC 的本地优先 Markdown 编辑器
华为·编辑器·harmonyos·鸿蒙
世人万千丶12 小时前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
YM52e14 小时前
鸿蒙ArkTS项目实战 - 门店陈列巡检台:完整代码与运行效果
学习·华为·harmonyos
贾伟康14 小时前
【中国方言题库|06】HarmonyOS ArkTS 闽南语与客家话实战:统一分库页面导航与空状态
harmonyos·arkts·arkui·router·空状态
贾伟康14 小时前
【中国方言题库|07】HarmonyOS ArkTS 方言练习实战:推进题目、提交答案并同步统计
harmonyos·arkts·数据持久化·状态管理·arkui
深念Y15 小时前
RIO-UL00(EMUI 4.1 / Android 6.0.1 / arm64)开机自启动 sshd
android·linux·华为·安卓·chroot·sshd·emui