热修复实现是基于阿里的一个开源项目AndFix开源项目地址: https://github.com/alibaba/AndFix/
第一步:接入项目
在项目app下build.gradle配置
compile 'com.alipay.euler:andfix:0.4.0@aar'
第二步:使用AndFix库进行加载补丁
使用方式
1. 初始化PatchManager,并且指定当前版本
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
* app的版本号可以通过如下代码获取得到
String appversion= getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
2. 加载补丁
//这个方法越早执行越好,可以考虑放在Application的onCreate方法中
patchManager.loadPatch();
3. 加载补丁文件
//只要下载完补丁,一旦执行这个方法,补丁就会立马生效
patchManager.addPatch(path);
第三步:制作补丁
下载制作补丁的文件
https://github.com/alibaba/AndFi ... /apkpatch-1.0.3.zip
提供之前存在bug的apk和修复后的apk
然后将2个apk放在工具目录下
在当前目录打开cmd
执行命令后会在工具目录下生成一个patch目录,里面的AndFixDemo-debug-after-86112f4778c67a620082b737ae673830.apatch则是我们生成的补丁文件
usage: apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
eg:
F:\热修复\apkpatch-1.0.3>apkpatch.bat -f AndFixDemo-debug-after.apk -t AndFixDemo-debug-before.apk -o patch -k test.jks -p 123456 -a test -e 123456
第四步:将补丁拖放到手机上
实际情况是从网络上下载补丁然后通过第二步将bug修复
混淆
在对加入热修复情况下做混淆的时候,在proguard-rules文件里配置
-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
native <methods>;
}
|
|