鸿蒙分包与Android app组件化

一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述鸿蒙分包与Android app组件化相关的知识,希望能为你提供帮助。
鸿蒙分包 鸿蒙分包与android app组件化
鸿蒙分包从设计思路上看起来与Android的组件化很像,两者从本质上看都是为了实现项目业务的解耦、代码的重复利用、提高协同开发的效率

  • Android组件化:
    • 优点:不相互依赖,可以相互交互,任意组合,高度解耦,自由拆卸,自由组装,重复利用,分层独立化
    • 缺点:如果各个组件中要进行交互通信的话,会比较麻烦(现在较好的解决方法是使用APT技术)
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  • 鸿蒙分包:
    • 优点:Android组件化拥有的他基本上也都有,它主要的优点还是在于分包加载这个机制,用户如果只需要这一个分包下面的功能,只要下载这一个分包就好了,其他的分包都不会下载,从而大大减小了应用的体积
    • 缺点:与Android一样,通信问题还是比较麻烦,现在较好的解决方法还是通过ability中 的IntentParams类来实现数据的交互传输
【鸿蒙分包与Android app组件化】::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
Android组件化的文章博客论坛上肯定是一搜一大片,这里就不多做介绍了;下面就根据我司的项目和需求来分享一下我在鸿蒙开发过程中学习到的一些知识吧。
应用场景
由于公司的业务比较特殊,用户通过NFC碰一碰能直接拉起应用,然后通过AP或者NAN配网就能成功与机器设备搭建连接,进行通信;由于公司业务的复杂化,产品多种多样,项目整体后期只会变得越来越庞大了,如果只是像以前一样开发,不进行分包的话,那最后项目一定会变得很臃肿,而且不易于维护。现在我们通过分包,把整个项目拆分成了如图的几个module。
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. aIndex:项目的入口,这个module主要是为了配置app的logo,控制app是否在桌面显示图标等(由于需要,app不在桌面显示app,用户只能通过碰一碰拉起app)
  2. common、commonLibrary、commonRes:这几个module主要是存放一些公共资源文件、项目共用的library、网络请求接口存放地址等
  3. main:整个项目的核心部分,登录、配网都在这个module下
  4. 剩下的那些module都是我司的一个个相关产品,每个产品对应一个module,每个module互不影响(相关的配置、依赖都在build.gradle里面实现)
分包实现
  1. File=> New=> Module
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 选择Device 与 Template
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 设置当前Module名字及包名
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 设置Ability![]
    ::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 配置签名
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 设置配置文件,设置版本号与适配机型,deviceType:[ " phone" ]
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
注意事项
在设置版本型号的时候要注意,此处因为是用的js语言开发的,我们是在js目录下的config.json文件中配置相关事项的,此处配置的版本号要与其他所有包下面的版本号都一致,并且build.gradle中的sdk版本也要一致,否则就可能会导致项目整体打包出错或者导致应用安装失败。
常见问题
  1. 分包之后,如果对资源文件进行修改的话,打包之前都要先build.clean一下,不然可能会导致修改不生效
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 如果在安装过程中出错的话(这里我以hdc安装为例),报如下错误,大概率是因为版本号不一致导致的,此时请检查每个分包的版本号是否一样
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::

Failure[HARMONY_INSTALL_PARSE_FAILED_INCONSISTENT_BUNDLE_VERSION]

  1. 公共工具类是不需要引用的,使用的时候直接找到工具类路径引用即可;但是公共资源仓库是需要在分包目录下的build.gradle下面进行依赖
::: hljs-center
鸿蒙分包与Android app组件化

文章图片

:::
  1. 分包新建之后检查一下项目根目录下面的setting.gradle文件中是否包含新建的分包名称
了解更多原创内容请关注:Joyoung九阳
从技巧到案例,系统化分享鸿蒙智能家居应用技术,本团队将长期更新,欢迎关注和收藏!
想了解更多关于鸿蒙的内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#bkwz

    推荐阅读