AnoleFix
Another hotfix 另一个热修复方案 大部分代码来自InstantRun。这个方案很久之前就和小伙伴讨论过,一直没实现,现完成了Alpha版,后期再优化。
**注:**该项目暂时没有应用到具体上线应用中,暂时只做技术展示
Feature
- 可实现动态实时修复
- 可实现热插拔(待实现,只实现了动态修复功能,后期加上动态撤销补丁功能)
- 兼容ART和DalvikVM虚拟机,4.0-7.0,不会出现类似hotfix方案在art下虚拟机quick引用指针错乱造成的崩溃情况
- 补丁包动态生成,使用方式和RocooFix 一致,但某些功能待完善
Known issue
- 补丁打包速度待优化
- 有些未考虑到的补丁逻辑还待补充
- 性能会略有消耗
- 暂时只支持开启混淆状态下的补丁打包
Use
Gralde 配置
buildscript {
repositories {
jcenter()
maven{
url 'https://dl.bintray.com/dodola/maven'
}
}
dependencies {
classpath 'dodola.anole.plugin:gradle_plugin:1.0.1'
}
}
//在app的gradle增加
apply plugin:'dodola.anole.plugin'
rocoo_fix {//此处和rocoo_fix的用法一样,但暂时只有preVersionPath的功能
preVersionPath = '1'
}
Anole.applyPatch(context, patch_path);
Porguard
-keep class dodola.anole.runtime.** { *; }
-keep class dodola.anole.lib.** { *; }