鸿蒙工程结构简析

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

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

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

猜你喜欢

转载自blog.csdn.net/xiaozhi239/article/details/108695820