Android插件化,热修复框架

Posted by PanMin Blog on December 21, 2016

– layout: post # 使用的布局(不需要改) title: Android插件化,热修复框架 # 标题 subtitle: #副标题 date: 2016-12-21 # 时间 author: PanMin # 作者 header-img: img/post-bg-2015.jpg #这篇文章标题背景图片 catalog: true # 是否归档 tags: #标签 - Android —

1.dynamic-load-apk

作者 百度任玉刚 插件化框架 途牛已上线使用 支持代码 资源文件以插件形式加入到host。

缺陷:

  1. 不支持Service和BroadcastReceiver。
  2. 迁移成本,需要修改插件,插件app需要继承自proxyActivity

优点:

  1. 插件无需安装host即可吊起
  2. 支持R访问插件资源
  3. 插件支持Activity和FragmentActivity
  4. 基本无反射调用
  5. 插件安装后任可独立运行

2.Droid Plugin

作者 奇虎360张勇 360手机助手已上线使用 可实现几近无规则吊起

缺陷:

  1. 无法使用自定义资源的通知
  2. 无法注册一些特殊Intent Filter的组件(四大组件)
  3. 对Native支持不好

优点:

  1. 插件无需任何修改,可独立安装运行,也可以做插件运行
  2. 四大组件无需在Host程序注册
  3. 超强隔离性,不同插件运行在不同的进程中
  4. 资源完全隔离 5.实现进程管理,插件的空进程会被及时回收,占用内存低
  5. 插件的静态广播会被当作动态处理,如果插件没有运行,静态广播永远不会触发
  6. API侵入性低

3.DynamicAPK

作者 携程移动团队 携程旅行已上线使用 基于多dex/apk加载的解决方案

优点:

  1. 迁移成本低(无需做任何activity/fragment/resource的proxy实现)不使用代理来管理插件的activity/fragment的生命周期。修改后aapt会处理插件种的资源,R.java中的资源引用和普通Android工程没有区别,开发者可以保持原有的开发规范
  2. 更加有利于并发开发
  3. 提升编译速度
  4. 提升启动速度。dex解压、dexopt、加载耗时较长,使用按需加载启动时间过长
  5. 适合HotFix(代码和资源)
  6. 按需下载和加载任意功能模块(包含代码和资源) 深入了解DynamicApk

4.Nuwa

修改ClassLoader加载顺序并修改CLASS_ISPREVERIFIED达到热修复效果

优点:

  1. 自动化热修复
  2. 热修复所有优点

5.AndFix

作者 阿里巴巴移动团队 阿里旗下多款app已上线使用

原理 在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的

对该框架了解不多,建议参考Coolspan Alibaba-AndFix Bug热修复框架原理及源码解析Air bolg的三篇AndFix解析进行深入了解。