———— ↑ 点击蓝色字关注我 ————

Android 开发中模块化、组件化、插件化、热修复

前言
说到Android前沿技术,大家必不可少的会说组件化、热修复(热更新)、插件化、模块化,还有Kotlin、Flutter、Rxjava、Retrofit、Hook等技术。这些词汇有些血液新鲜,有些已成历史,但总有开发者对新技术的更新姗姗来迟。今天,不谈三国、不论水浒,我只对组件化、热修复、插件化、模块化说说自己的理解。
1.模块化
模块(Module)是AndroidStudio提出的,将原项目中共享的部分或者业务提取出来形成单独的Module,类似于我们依赖三方一样。
每一个Module可以设置为Library或者Application两个格式,其他Module只需要添加依赖就可以了,然后就能调用该模块的抽取出来的业务功能。
2.组件化
组件化是基于模块化的,把一个项目分成多个项目开发,有一个主壳模块,其他业务模块作为library依赖给主壳即可。
在打包的时候设置为library,在调试时设置为application,目的解耦与加快开发。
使用场景:多人合作开发,隔离开发,大家各司其职,最后合成一个App。
①优点:
分开发开,不但解耦,而且降低了开发的复杂度
提高编译速度:每个模块可以单独作为apk运行
App可以灵活拆装
②规则:
只有上层组件能依赖下层组件
同层组件不同相互依赖,这样可以彻底解耦
3.插件化
①定义:每个组件业务就是一个独立的apk,然后通过主app动态加载部署业务组件apk。
②好处:
业务组件解耦,能实现业务组件热插拔
更改产品迭代模式,可以分为主App和次业务App
改善产品迭代过程,可以在不影响用户的情况下实现业务组件更新以及bug修复
③插件化的思想
主App被系统安装调用,这个过程由系统提供,而插件apk并非被系统安装。简言之,需要将插件apk看成一个“非apk”文件,只是结构略显复杂的文件。调用插件即用某种特殊的方式打开这个文件。
④插件化步骤
第一,分析主App:主App打包完成后,会形成dex、images、xml资源。Dex靠PathClassLoader加载,图片以及XML资源靠Resource加载
第二,代码实现
创建DexClassLoader加载插件代码
创建Resource加载资源文件
管理插件Activity生命周期
4.热修复
热修复,亦名热更新,当线上应用出现紧急BUG,为了避免重新发版,并且保证修复的及时性而进行的一项在线推送补丁的修复方案。
热修复与插件化都利用classloader实现加载新功能。热修复比插件化复杂,插件化只是增加新的功能或资源文件,所以不涉及抢先加载旧类的使命。热修复为了修复bug,要将新的同名类替旧的同名bug类,要抢在加载bug类之前加载新的类。
热修复作为当期前沿技术,在业界内比较著名的有阿里巴巴的AndFix、Dexposed,腾讯QQ空间的超级补丁和微信的Tinker,大众点评nuwa和美团Robust。阿里百川推出的HotFix热修复服务就基于AndFix技术,定位于线上紧急BUG的即时修复。虽然Tinker支持修复的功能强大兼容性很好,但是不能即时生效、集成负责、补丁包大。
最后
这是我对组件化、热修复(热更新)、插件化、模块化的一个简单理解,后期会对每一种技术做详细讲解。

- end -
作者:Anfly

本文介绍了Android开发中的模块化、组件化、插件化和热修复技术,强调了它们在项目开发中的作用和优势。模块化通过将项目拆分为独立模块降低复杂度;组件化进一步解耦,提高编译速度和灵活性;插件化实现业务组件的动态加载,便于热插拔和更新;热修复则提供了在线修复BUG的能力,文中提到了AndFix、Dexposed、Tinker等热修复方案。

被折叠的 条评论
为什么被折叠?



