鸿蒙分包与Android app组件化

Posted HarmonyOS技术社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸿蒙分包与Android app组件化相关的知识,希望对你有一定的参考价值。

鸿蒙分包

鸿蒙分包与android app组件化

鸿蒙分包从设计思路上看起来与Android的组件化很像,两者从本质上看都是为了实现项目业务的解耦、代码的重复利用、提高协同开发的效率

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

::: hljs-center

:::

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

::: hljs-center

:::

Android组件化的文章博客论坛上肯定是一搜一大片,这里就不多做介绍了;下面就根据我司的项目和需求来分享一下我在鸿蒙开发过程中学习到的一些知识吧。

应用场景

由于公司的业务比较特殊,用户通过NFC碰一碰能直接拉起应用,然后通过AP或者NAN配网就能成功与机器设备搭建连接,进行通信;由于公司业务的复杂化,产品多种多样,项目整体后期只会变得越来越庞大了,如果只是像以前一样开发,不进行分包的话,那最后项目一定会变得很臃肿,而且不易于维护。现在我们通过分包,把整个项目拆分成了如图的几个module。

::: hljs-center

:::

  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

:::

  1. 选择Device 与 Template

::: hljs-center

:::

  1. 设置当前Module名字及包名

::: hljs-center

:::

  1. 设置Ability![]
    ::: hljs-center

:::

  1. 配置签名

::: hljs-center

:::

  1. 设置配置文件,设置版本号与适配机型,deviceType:[ "phone" ]

::: hljs-center

:::

注意事项

在设置版本型号的时候要注意,此处因为是用的js语言开发的,我们是在js目录下的config.json文件中配置相关事项的,此处配置的版本号要与其他所有包下面的版本号都一致,并且build.gradle中的sdk版本也要一致,否则就可能会导致项目整体打包出错或者导致应用安装失败。

常见问题

  1. 分包之后,如果对资源文件进行修改的话,打包之前都要先build.clean一下,不然可能会导致修改不生效

::: hljs-center

:::

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

::: hljs-center

:::

Failure[HARMONY_INSTALL_PARSE_FAILED_INCONSISTENT_BUNDLE_VERSION]

  1. 公共工具类是不需要引用的,使用的时候直接找到工具类路径引用即可;但是公共资源仓库是需要在分包目录下的build.gradle下面进行依赖

::: hljs-center

:::

  1. 分包新建之后检查一下项目根目录下面的setting.gradle文件中是否包含新建的分包名称

了解更多原创内容请关注:Joyoung九阳
从技巧到案例,系统化分享鸿蒙智能家居应用技术,本团队将长期更新,欢迎关注和收藏!

想了解更多关于鸿蒙的内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#bkwz

以上是关于鸿蒙分包与Android app组件化的主要内容,如果未能解决你的问题,请参考以下文章

鸿蒙App开发---Text组件

鸿蒙App开发---Text组件

一种Android分包策略推荐

鸿蒙开发(14)---ListContainer列表组件

鸿蒙App开发(11)---RadioButton与RadioContainer组件

Webpack的代码分包&&Vue3中定义异步组件分包&&refs的使用