//引入AndFix模块
implementation ‘com.alipay.euler:andfix:0.5.0@aar’
2.2、AndFix初始化
根据GitHub文档上的How to use这一部分的说明,我们来对AndFix做初始化操作。这里创建一个类AndFixPatchManager来统一管理AndFix所有的API,这样做一是为了方便管理,二是为了可以降低AndFix对我们代码的侵入性:
/**
-
作者:created by Jarchie
-
时间:2020/5/22 14:33:16
-
邮箱:jarchie520@gmail.com
-
说明:管理AndFix所有的API
*/
public class AndFixPatchManager {
private static AndFixPatchManager mInstance = null;
private static PatchManager mPatchManager = null;
//单例模式双检查机制
public static AndFixPatchManager getInstance(){
if (mInstance == null){
synchronized (AndFixPatchManager.class){
if (mInstance == null){
mInstance = new AndFixPatchManager();
}
}
}
return mInstance;
}
//初始化AndFix方法
public void initPatch(Context context){
mPatchManager = new PatchManager(context);
mPatchManager.init(Utils.getVersionName(context));
mPatchManager.loadPatch();
}
//加载Patch文件
public void addPatch(String path){
try {
if (mPatchManager!=null){
mPatchManager.addPatch(path);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
这里面用到了一个**Utils.getVersionName()**的工具方法,这个方法就是来获取应用版本信息的:
//获取版本名称
public static String getVersionName(Context context) {
String versionName = “1.0.0”;
try {
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
versionName = pi.versionName;
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
然后在项目的Application类中调用上面写好的初始化方法即可完成AndFix的初始化操作:
/**
-
作者:created by Jarchie
-
时间:2020/5/22 14:40:30
-
邮箱:jarchie520@gmail.com
-
说明:自定义的Application类
*/
public class BaseApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//完成AndFix的初始化
initAndFix();
}
private void initAndFix() {
AndFixPatchManager.getInstance().initPatch(this);
}
}
2.3、构建APK
2.3.1、构建异常APK
①、创建布局
先来创建一个布局文件_activity_main.xml_,内容很简单,两个按钮,一个模拟异常场景,一个模拟修复场景:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation&#