Android热修复实战之AndFix,Android开发必学

//引入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&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值