利用classloader同一个项目中加载另一个同名的类_Android 开发中模块化、组件化、插件化、热修复...

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

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

e431e702f57730bac78adf24d13b506f.png

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

d1ed00e9fcb37263fccef29a6cd292be.png

前言

说到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支持修复的功能强大兼容性很好,但是不能即时生效、集成负责、补丁包大。

最后

这是我对组件化、热修复(热更新)、插件化、模块化的一个简单理解,后期会对每一种技术做详细讲解。

82c3d0ae0d5ebf7eae5ffefefaadfd08.png

- end -

作者:Anfly

3f0390a35db96d9e3e17e5706597a9c4.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值