先导入依赖:
可以去github看:
implementation 'com.alipay.euler:andfix:0.5.0@aar'
新建Application初始化
public class AndFixApplication extends Application {
public static PatchManager mPatchManager;
@Override
public void onCreate() {
super.onCreate();
mPatchManager = new PatchManager(this);
// String appVersion = getPackageManager().getPackageInfo(getPackageName(),0).versionName;
// mPatchManager.init(appVersion);
mPatchManager.init("1.0");
// 加载已经添加到PatchManager中的patch
mPatchManager.loadPatch();
}
}
按钮修复:
private static final String APATCH_PATH = "/fix.apatch"; // 补丁文件名
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.btn_xiufu:
update();
break;
}
}
private void update() {
String patchFileStr = Environment.getExternalStorageDirectory().getAbsolutePath() + APATCH_PATH;
Log.i("sdkPath", "path = : " + patchFileStr);
try {
AndFixApplication.mPatchManager.addPatch(patchFileStr);
} catch (IOException e) {
e.printStackTrace();
}
}
可以写一些修改前的记号
修改前打包 可以改名为old.apk
修改后打包 可以改名为new.apk
然后使用官方提供的工具:https://github.com/alibaba/AndFix/blob/master/tools/apkpatch-1.0.3.zip
讲两个apk放入该目录中。如图:
然后使用cmd进入该目录,使用命令生成补丁:
<u>apkpatch.bat -f 新apk -t 旧apk -o 输出目录 -k app签名文件 -p 签名文件密码 -a 签名文件别名 -e 别名密码</u>
将生成的patch改名与代码中的一致//private static final String APATCH_PATH = "/fix.apatch"; // 补丁文件名
将补丁push到sd卡目录下,点击修复加载补丁文件。