###
官方网站:https://github.com/alibaba/AndFix
AndFix 目前只能针对代码中的业务逻辑,不能对成员变量、布局文件和资源文件进行热修复。
1、 在AS中导入 dependencies { compile 'com.alipay.euler:andfix:0.5.0@aar' } 2、在application中的onCreate中初始化
patchManager = new PatchManager(context); patchManager.init(appversion);//current version
Load patch, patchManager.loadPatch();
//可在后端推送中或者请求中添加 补丁文件(out. apatch) Add patch, patchManager.addPatch(path);//path of the patch file that was downloaded When a new patch file has been downloaded, it will become effective immediately by addPatch. //复制且加载补丁成功后,可删除下载的补丁 3、 混淆(若是release进行如下混淆) -dontwarn android.annotation -dontwarn com.alipay.euler.** -keep class com.alipay.euler.** {*;} -keep class * extends java.lang.annotation.Annotation -keepclasseswithmembernames class * { native ; } 4、 在官网上下载apkpatch(用来生成out. apatch)
解压出来在所在apkpatch的文件夹 然后可以把你要比对的两个apk 和你的密钥库文件都放到里面来 方便 命令的输入
命令:apkpatch.bat -f new.apk -t old.apk -o output -k key.jks -p 123456 -a AndroidFix -e 123456 -f :新版本 -t : 旧版本 -o:输出目录 -k:打包所用的keystore -p: keystore的密码 -a: keystore 用户别名 -e: keystore 用户别名密码
在你打包的时候 两个apk包必须都是用同样的打包方式 debug 或者release 如果两个不相同的话,会报错 ,因为两次生成的buildConfig是不同的。