AutoFix
目前项目支持静态修复功能需要重启,集成简单,使用方便。
原理
这两篇文章就够了
集成
Get Gradle Plugin
根据以下操作把代码填到你项目根目录的 gradle 中
classpath 'com.cuieney:autofix:1.1.1'
build.gradle maybe look like this:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.cuieney.autofix:gradle:1.1.7' } }
在你的 build.gradle:中添加这样的代码块
apply plugin: "com.cuieney.autofix"
Get AutoFix SDK
gradle dependency:
dependencies { compile 'com.cuieney.library:fix:1.1.2' }
使用步骤
在你的 application 中添加一下代码初始化:
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); AutoFix.init(this); }
如果你需要加载补丁的话可以这样,每次需需要重启:
AutoFix.applyPatch(this,patch.jar);
ProGuard
添加到你的 proguardFile 文件中:
-keep class cn.cuieney.fix.* { ; }
补丁制作
根据下面三步即可以完成补丁的制作
1.首选你的添加auto_fix
extension 到你的 build.gradle 中,只在你需要制作补丁的时候才用得到(不制作补丁注释即可)
auto_fix {
lastVersion = '1'//顾名思义,上次一的版本号(就是说你当前 Version 是 1,出现 bug 了,你把 versioncode 变成了 2)然后这个 lastVersion 就填 1
}
2.现在你已经改好 bug 了,需要获取相应的 patch.jar 把这个补丁打到 app 中,只需要编译一下项目即可,buildApk 这个操作也是可以的
3.获取补丁 push 到手机中(如果项目已上线即 push 到服务器)
这个就是你的补丁对应的目录,patch.jar 就是补丁包(version 2
)代表你生成补丁当前的版本号
TODO
- 增强兼容性
- 支持 runtime
- 增加插件化跳转 Act
补充
你会看到 AutoFix SDK 里面有这样一个类 DynamicApk,这是一个 beta 版。用于插件化的工具。目前 focus 获取 apk 的资源文件,目前接口如下:
- getStringFromApk
- getBitmapFromApk
- getDrawableFromApk
- getMipmapFromApk
- getLayoutFromApk
- getColorFromApk
- getDimenFromApk
参数都一样(Context context, String apkPath, String name),只介绍最后一个参数 such as(R.drawable.thumb)这个 name 就是 thumb
问题
发现 bug 或好的建议欢迎 issues or Email cuieney@163.com
License
F**K License