热修复:产品出现小Bug,如果开发者修复Bug,重新发包,则成本较高、效率低,用户也需要重新下载更新;而热修复即可通过类似于一种打补丁的形式,将新旧版本的差异文件(.apatch文件),下载至客户端,现有客户端可以通过修补这个补丁,简单方便的实现bug的修改和处理。而用户需要下载的内容,即为这一个补丁的大小,实现类似于服务器更新的增量包的效果.(AndFix)
AndFix使用过程:
1、添加grade依赖:compile 'com.alipay.euler:andfix:0.5.0@aar',
2、初始化PatchManager:
patchManager = new PatchManager(context);
patchManager.init(app version);
3、加载已经添加到patchmanager中的patch
mPatchManager.loadPatch();
第二步和第三步,通常放在Application的onCreate()方法中
4、添加代码混淆配置:
-keepclass * extends java.lang.annotation.Annotation
-keepclasseswithmembernamesclass * {
native <methods>;
}
5、判断补丁文件是否存在,如果存在,则直接打补丁:
private static finalStringAPATCH_PATH="/fix.apatch";// 补丁文件名
String patchFileStr = Environment.getExternalStorageDirectory().getAbsolutePath() +APATCH_PATH;
Log.d(TAG,patchFileStr);
File file =newFile(patchFileStr);
if(file.exists()){
Log.d(TAG,"update: 补丁存在");
try{
AndFixApplication.mPatchManager.addPatch(patchFileStr);
}catch(IOException e) {
e.printStackTrace();
}
}else{
Log.d(TAG,"update: 补丁不存在");
}
补丁生成方式,官方提供的工具apkpatch,采用命令行工具:
a、apkpatch.bat -f ok.apk -t error.apk -o fix -k keystore -p 111111 -a 111111 -e 111111(windows)
b、sh apkpatch.sh -f ok.apk -t error.apk -o fix -k keystore -p 111111 -a 111111 -e 111111(mac os)
其中:
-f:新文件
-t:旧文件
-o:生成文件
-k:keystone文件
-p:keystore密码
-a:keystore别名
-e:keystore别名密码
通过命令可生成.aptch文件,将.apatch文件重命名为fix.apatch,复制或者push到指定目录下即可.