王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识&&梳理逻辑!
Posted 程序员入门进阶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识&&梳理逻辑!相关的知识,希望对你有一定的参考价值。
原创PDF |《Android 深入系统完全讲解》免费开源,可能价值百万!
王姨劝我学HarmonyOS鸿蒙2.0系列教程之一环境搭建&&跑起来模拟器!
写完了第一篇,跑去找王姨,王姨笑了笑说,小伙子很有前途。说着她拿起桌上削好的苹果,放进自己嘴巴,吧唧吧唧的嚼了起来~~~
看来是不满意,我又要加班搞起。于是有了这一篇文章。
上一篇我们说了环境搭建,以及注册账号,把模拟器跑起来,那么这一节就来看看,项目的目录结构。
1 项目结构剖析
我们打开项目,看到如下的目录结构,如果你不细看,一眼望去,好像安卓,或者说大致一模一样。
上一节我们去看了编译出来的hap,用zip解压出来,会发现跟apk结构类似,
这里我们把classes.dex 和 entry_debug_signed_entry.apk 都来反编译下,就能看出一些有趣的内容,对于我们理解hap会有帮助。
classes.dex 反编译的结构:
会发现这里面的
MainAbilitySlice extends AbilitySlice
MainAbility extends Ability
MyApplication extends AbilityPackage
这几个都是在鸿蒙的jar包里面,我们继续看entry_debug_signed_entry.apk的反编译,这个里面会出现更多熟悉的内容:
通过这个关系网,就可以得出我们的应用实际实现了一个 ShellMyApplication类,来完成Application的相关工作。
然后我们又看到了:
MainAbilityShellActivity extends AbilityShellActivity ,这里的AbilityShellActivity
通过这块分析,发现鸿蒙的框架,是对安卓框架做了一次封装,Activity封装成AbilityShellActivity,然后每个模块又带一个MainAbilityShellActivity。
同时 Application 封装成HarmonyApplication,然后每个模块又带一个ShellMyApplication。
于是,当前的整个逻辑就变成如下的一个结构(依据反编译信息推出的一个架构,如有错漏,欢迎交流)
同时我简单设置了断点,可以清晰的看到调用关系:
然后我们再看下SDK中提供的jar包,可以看到系统抽离出来了这几个:
那么我来总结下,鸿蒙系统在手机线的实现,基本上是围绕着封装来做,将安卓原始的Activity,Provider,Service,Application,进行封装,从而解析一个叫做HAP的鸿蒙应用包,完成解耦的动作。
又扯远了,我们回过头来,看看项目结构:
config.json 可以类比成androidManifest.xml
resources 跟安卓一样,代表资源,只是目录结构有区别。
MyApplication extends AbilityPackage ,代表一个应用。
MainAbility extends Ability,可以理解成Activity,但是更准确的是没有界面的一个抽象层,可以理解成Activity管理器。
MainAbilitySlice extends AbilitySlice,这个代表一个界面,这个可以对标称Activity,一个显示界面。
从实现上来分析,HarmonyOS ,实现了一个自己的Activity,叫做
AbilityShellActivity,在真正加载起来的时候,是MainAbilityShellActivity。
而 MainAbilityShellActivity 直接操作Ability ,Ability里面有多个AbilitySlice 。
我们开发的时候,直接面对的就是Ability,生成出来就是hap文件了。关于里面的实现,只需要了解下就行。
于是我们看下逻辑图:
我们看一些官方的介绍:
更多参考官方文档:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/project_overview-0000001053822398
好了,这一节就讲到这里,我们下期再见~
--end--
今天分享一些整理的鸿蒙学习资料,加我微信 code_gg_boy ,免费领取。
后续会建对应的鸿蒙学习群,大家一起交流成长。
以上是关于王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识&&梳理逻辑!的主要内容,如果未能解决你的问题,请参考以下文章
王姨劝我学HarmonyOS鸿蒙2.0系列教程之三Ability概述&&调用方法!
王姨劝我学HarmonyOS鸿蒙2.0系列教程之三Ability概述&&调用方法!
王姨劝我学HarmonyOS鸿蒙2.0系列教程之四Git搭建&&下载实例!
王姨劝我学HarmonyOS鸿蒙2.0系列教程之四Git搭建&&下载实例!