0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS鸿蒙2.0教程之应用知识&&梳理逻辑!

Android编程精选 来源:程序员入门进阶 作者:明哥 2021-06-29 10:53 次阅读

上一篇我们说了环境搭建,以及注册账号,把模拟器跑起来,那么这一节就来看看,项目的目录结构。

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的反编译,这个里面会出现更多熟悉的内容:

5126ca38-d84c-11eb-9e57-12bb97331649.png

512f58a6-d84c-11eb-9e57-12bb97331649.png

通过这个关系网,就可以得出我们的应用实际实现了一个 ShellMyApplication类,来完成Application的相关工作。

然后我们又看到了:

513e1774-d84c-11eb-9e57-12bb97331649.png

MainAbilityShellActivity extends AbilityShellActivity ,这里的AbilityShellActivity

通过这块分析,发现鸿蒙的框架,是对安卓框架做了一次封装,Activity封装成AbilityShellActivity,然后每个模块又带一个MainAbilityShellActivity。

同时 Application 封装成HarmonyApplication,然后每个模块又带一个ShellMyApplication。

于是,当前的整个逻辑就变成如下的一个结构(依据反编译信息推出的一个架构,如有错漏,欢迎交流)

同时我简单设置了断点,可以清晰的看到调用关系:

然后我们再看下SDK中提供的jar包,可以看到系统抽离出来了这几个:

那么我来总结下,鸿蒙系统手机线的实现,基本上是围绕着封装来做,将安卓原始的Activity,Provider,Service,Application,进行封装,从而解析一个叫做HAP的鸿蒙应用包,完成解耦的动作。

又扯远了,我们回过头来,看看项目结构:

52379f6a-d84c-11eb-9e57-12bb97331649.png

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文件了。关于里面的实现,只需要了解下就行。

于是我们看下逻辑图:

525c793e-d84c-11eb-9e57-12bb97331649.png

更多参考官方文档:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/project_overview-0000001053822398

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译
    +关注

    关注

    0

    文章

    659

    浏览量

    32899
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1038

    浏览量

    46007
  • 鸿蒙
    +关注

    关注

    57

    文章

    2367

    浏览量

    42896

原文标题:王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识&&梳理逻辑!

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HPLC+HRF双模载波芯片CN8513&CN8514用于智能抄表系统

    HPLC+HRF双模载波芯片CN8513&CN8514用于智能抄表系统
    的头像 发表于 01-03 10:04 76次阅读
    HPLC+HRF双模载波芯片CN8513&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;CN8514用于智能抄表系统

    如何判断产品需不需要做AT&amp;amp;amp;T认证?AT&amp;amp;amp;T测试内容和要求分享

    随着经济全球化的发展,国内越来越多产品厂商选择将自家产品出口到北美市场,而这时候各位厂商都会面临产品需不需要做AT&amp;T的问题。今天英利检测针对这一问题整理了一些关于AT&amp;T认证中
    的头像 发表于 12-23 17:46 130次阅读
    如何判断产品需不需要做AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证?AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T测试内容和要求分享

    北美运营商AT&amp;amp;amp;T认证中的VoLTE测试项

    北美运营商AT&amp;T的认证测试内容涵盖了多个方面,以确保设备和服务的质量、兼容性以及用户体验。在AT&amp;T的认证测试中,VoLTE(VoiceoverLTE)测试项是一个重要的组成部分
    的头像 发表于 12-06 16:52 160次阅读
    北美运营商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证中的VoLTE测试项

    北美运营商AT&amp;amp;amp;T认证的测试内容有哪些?

    北美运营商AT&amp;T的认证测试内容涵盖了多个方面,以确保设备和服务的质量、兼容性以及用户体验。以下是英利检测整合的AT&amp;T认证的主要测试内容:基础认证测试联邦通信委员会(FCC
    的头像 发表于 11-12 17:39 247次阅读
    北美运营商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证的测试内容有哪些?

    迅为itop-3568开发板AMP双系统使用手册之烧写AMP镜像

    迅为itop-3568开发板AMP双系统使用手册之烧写AMP镜像
    的头像 发表于 11-04 15:00 526次阅读
    迅为itop-3568开发板<b class='flag-5'>AMP</b>双系统使用手册之烧写<b class='flag-5'>AMP</b>镜像

    北美运营商AT&amp;amp;amp;T认证的费用受哪些因素影响

    申请北美运营商AT&amp;T认证的价格因多种因素而异,包括产品类型、认证范围、测试难度等。一般来说,申请AT&amp;T认证的费用可能相对较高,因为AT&amp;T作为北美地区的主要电信运营商,其
    的头像 发表于 10-16 17:10 233次阅读
    北美运营商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证的费用受哪些因素影响

    onsemi LV/MV MOSFET 产品介绍 &amp;amp;amp; 行业应用

    01直播介绍直播时间2024/10/281430直播内容1.onsemiLV/MVMOSFET产品优势&amp;市场地位。2.onsemiLV/MVMOSFETRoadmap。3.onsemiT10
    的头像 发表于 10-13 08:06 420次阅读
    onsemi LV/MV MOSFET 产品介绍 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; 行业应用

    思瑞浦车规级产品矩阵,全面覆盖汽车级CAN&amp;amp;amp;LIN、LDO需求

    聚焦高性能模拟芯片和嵌入式处理器近期,思瑞浦为广大工程师带来了《思瑞浦车规级产品矩阵,全面覆盖汽车级CAN&amp;LIN、LDO需求》的在线研讨会直播,重点介绍了思瑞浦汽车产品布局与技术优势,同时
    的头像 发表于 09-21 08:10 535次阅读
    思瑞浦车规级产品矩阵,全面覆盖汽车级CAN&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;LIN、LDO需求

    OC7201C资料(PCB &amp;amp; 原理图)

    电子发烧友网站提供《OC7201C资料(PCB &amp; 原理图).zip》资料免费下载
    发表于 07-18 16:19 1次下载

    FS201资料(pcb &amp;amp; DEMO &amp;amp; 原理图)

    电子发烧友网站提供《FS201资料(pcb &amp; DEMO &amp; 原理图).zip》资料免费下载
    发表于 07-16 11:24 0次下载

    北美运营商AT&amp;amp;amp;T认证入库产品范围名单相关

    AT&amp;T作为全球领先的通信服务运营商之一,通过AT&amp;T认证不仅是对产品质量的认可,更是产品打开北美市场大门的重要凭证。然而,或许您还不清楚AT&amp;T认证入库的产品范围,接下来
    的头像 发表于 06-28 16:58 465次阅读
    北美运营商AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T认证入库产品范围名单相关

    解读北美运营商,AT&amp;amp;amp;T的认证分类与认证内容分享

    在数字化日益深入的今天,通信技术的稳定与安全对于个人、企业乃至整个国家都至关重要。作为北美通信领域的领军者,AT&amp;T一直致力于为用户提供高效、可靠的通信服务。而在这背后,AT&amp;T
    的头像 发表于 06-05 17:27 633次阅读
    解读北美运营商,AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T的认证分类与认证内容分享

    在TSMaster中加载基于DotNet平台的Seed&amp;amp;amp;Key

    在UDS诊断过程中,会涉及到安全访问的问题,也就是所谓的Seed&amp;Key。TSMaster诊断模块支持通过.dll文件载入Seed&amp;Key算法用于安全访问解锁。在最近发布
    的头像 发表于 04-02 08:20 589次阅读
    在TSMaster中加载基于DotNet平台的Seed&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;Key

    Open RAN的未来及其对AT&amp;amp;T的意义

    3月14日消息,在“Connected America 2024”会议上,AT&amp;T高级副总裁兼网络首席技术官Yigal Elbaz讨论了Open RAN 的未来及其对AT&amp;T的意义。
    的头像 发表于 03-14 14:40 763次阅读

    【电磁兼容技术文档分享】频谱仪应用案例&amp;amp;amp;简易探头的制作

    【电磁兼容技术文档分享】频谱仪应用案例&amp;简易探头的制作
    的头像 发表于 02-19 13:20 1006次阅读
    【电磁兼容技术文档分享】频谱仪应用案例&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;简易探头的制作