鸿蒙工程结构简析

今天原本想在本地跑一下鸿蒙试试,但发现如今IDE只支持了Windows,就放弃了。不过仍是能够纸上谈兵的作下分析。看了眼官方文档,如今还比较简单。总体的感受是和安卓的基本概念区别不大,好比和安卓组件的对应、组件的生命周期等,都让人以为很熟悉。固然这只是表现形式,好比对多语言的支持就和安卓拉开了区分度。另外让我以为比较有意思的还有鸿蒙app的工程解构架构

在这里插入图片描述
从上面我感受模块化和组件化应该是鸿蒙从一开始就考虑的。我猜想一下它可能带来的优缺点:
app

  • 更好的隔离:工程隔离,从而更好的支持业务隔离。好比对于一个比较庞大的app(能够参考个人另外一篇文章 – 安卓app平台的架构),可能每一个子业务模块均可以做为一个单独的Feature,从而减小互相之间的依赖。好比本地开发时能够只编译Entry和本身所在的Feature, 从而减小编译时间。测试的时候所在的Feature能有更好的独立性。
  • 更灵活的部署:鸿蒙官网将Feature描述为"应用的动态特性模块",感受应该能够支持动态部署和局部热更新,对于提升更新速度、减小更新代价(好比带宽)以及增长新版本在用户中的占比都有优点。同时也能够支持更灵活的组装,好比针对某个市场或者某种硬件,在同一个app配置不一样的Feature。
  • 固然灵活性也会带来其余方面的问题,好比各类版本相关的维护应该会是一个很大的挑战,如今不止有app的版本,还有module的版本,还有module版本之间显式(IDL)和隐式(业务)的互相依赖;再加上可能app还有不一样flavor(上文提到的灵活组装),处理起来应该会麻烦。
  • 动态部署和热更新也容易带来监管的问题,比较难审核发布出去的内容。不过如今手游里热更也很广泛,因此仍是有不少先例能够研究。
  • 还有一个比较细节的是系统如何对不一样Feature之间的相同资源去重,又不影响它们的独立性,也不影响app的性能(好比加载时长)。好比FeatureA和FeatureB同时都依赖于一个library,是否是须要防止最后工程里存多份library,影响app size.
相关文章
相关标签/搜索