Android插件化机制与HotFix

为什么需要插件化
1. Dalvik虚拟机有方法数限制:Dex 64k method size limit / LinearAlloc exceeded 5MB capacity, App规模变大时会遇到这个问题
2. 模块解耦
3. 动态升级
4. 按需下载

概念
1. 插件化-指将一个程序划分为不同的部分,比如App皮肤样式
2. 组件化-指通用及复用性较高的构件,比如图片缓存可以看成一个组件被多个 App 共用
3. 动态加载

技术点
1. dex拆分和插件dex加载
-Android官方解决方案:multidex support library
2. 插件资源访问
-通过反射,通过调用AssetManager中的addAssetPath方法
3. 插件Activity生命周期
-代理Activity

技术原理
ClassLoader[6]
1. 隔离问题
2. Android ClassLoader
-dalvik.system.DexClassLoader
-dalvik.system.PathClassLoader

开源方案
1. DynamicLoadApk
2. AndroidDynamicLoader
3. PluginManager
4. DroidPlugin

参考资料
1. http://www.trinea.cn/android/android-plugin/
2. http://www.zhihu.com/question/19981105/answer/30865268
3. https://github.com/Qihoo360/DroidPlugin
4. http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207151651&idx=1&sn=9eab282711f4eb2b4daf2fbae5a5ca9a&scene=23&srcid=1012oLGP9VIwtu65wkinTUwb#rd
5. http://ingramchen.io/blog/2014/09/prevention-of-android-dex-64k-method-size-limit.html
6. http://www.trinea.cn/android/java-loader-common-class/
7. https://github.com/singwhatiwanna/dynamic-load-apk
8. https://github.com/alibaba/AndFix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值