Android最详细的Alibaba-AndFix 热修复框架的使用
来源:互联网 发布:ktv手机点歌软件 编辑:程序博客网 时间:2024/05/21 14:02
最详细的Alibaba-AndFix 热修复框架的使用
声明一点,这里只是使用,需要原理的话待下篇
- AndFix介绍
- AndFix框架的使用
AndFix介绍
AndFix,全称是Android hot-fix。是阿里开源的一个Android热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。注意:支持Android 2.3 到 6.0,我用7.0手机遇到了坑,提醒各位注意。
附上框架网址一枚:https://github.com/alibaba/AndFix 有需要的朋友可以去下载
作为现在Android界最火的技术,我也给大家慢慢详细介绍,希望耐心看完
一个很明显的bug,5/0肯定会出现问题,所以我们就需要把这个问题在不更新版本的情况下,把这个bug给解决。
AndFix框架的使用
说的再多,不如动手一试。现在就开始
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
第一步:添加依赖
dependencies { compile 'com.alipay.euler:andfix:0.5.0@aar'}
第二步:老生常谈,当然是在Application中初始化(顺带说一句,第三方的几乎都需要初始化)
public class AppApplication extends Application{ public static PatchManager patchManager; @Override public void onCreate() { super.onCreate(); initHotFix(); } private void initHotFix() { // 初始化patch管理类 patchManager = new PatchManager(this); // 初始化patch版本 此地方是获取当前版本 patchManager.init(getVersion()); // 加载已经添加到PatchManager中的patch patchManager.loadPatch(); } private String getVersion() { PackageManager packageManager = getPackageManager(); try { PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0); return packageInfo.packageName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; } }}
第二步:初始化完毕,那么就能使用了,这里做的是一个演示,实际情况需要走接口进行下载
第二步有话说:
1、这只是一个演示,直接放到了SD卡目录,记得添加权限
2、AppApplication.patchManager.addPatch(file.getAbsolutePath());通过此代码把生成的差分包添加到我们项目中,其实说白了,就是之前的出错的代码不执行了,执行差分包里面的代码!
3、还有个细节需要注意一下:当apk版本升级,需要把之前patch文件的删除,需要以下操作,不删的话会出现意想不到错误。
//删除所有已加载的patch文件AppApplication.patchManager.removeAllPatch();
使用
public class MainActivity extends AppCompatActivity { private Button btn_go; private TextView tv_answer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取差分包 实际情况是从后台服务器获取,我们这里只是做一个简单演示,直接放在SD卡了 File file = new File(Environment.getExternalStorageDirectory()+File.separator+"fix.apatch"); if(file.exists()){ //添加patch,只需指定patch的路径即可,补丁会立即生效 try { AppApplication.patchManager.addPatch(file.getAbsolutePath()); Toast.makeText(this,"修复成功",Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(this,"修复失败",Toast.LENGTH_SHORT).show(); } } tv_answer = (TextView) findViewById(R.id.tv_answer); btn_go = (Button) findViewById(R.id.btn_go); btn_go.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv_answer.setText("答案:答案出现错误,除数不能为0"+5/0); } }); }}
第三步:差分包的生成
使用工具:apkpatch-1.0.3 (https://github.com/alibaba/AndFix/tree/master/tools)
原理:所谓差分包就是通过新版本和旧版本进行对比,生成一个差异文件,就是所谓的补丁文件即patch文件。
1、工具下载解压:
2、命令行(前提需要打两个包,一个新版本一个旧版本)
首先先cd 到工具目录
然后执行 apkpatch.bat -f new.apk -t old.apk -o out -k hotfix.jks -p android -a 热修复 -e android(这是我自己的)
3、这里做一个命令行的解释:
apkpatch.bat -f new.apk -t old.apk -o out -k hotfix.jks -p android -a 热修复 -e android-f <new.apk> :新版本-t <old.apk> : 旧版本-o <output> : 输出目录-k <keystore>: 打包所用的keystore-p <password>: keystore的密码-a <alias>: keystore 用户别名-e <alias password>: keystore 用户别名密码
总结
这里就是一个简单的使用,不涉及原理,尝试一下,待下篇的原理篇
读万卷书,不如行万里路
源码
源码下载
- Android最详细的Alibaba-AndFix 热修复框架的使用
- Alibaba-AndFix Bug热修复框架的使用
- Alibaba-AndFix Bug热修复框架的使用
- Alibaba-AndFix Bug热修复框架的使用
- Alibaba-AndFix Bug热修复框架的使用
- 使用Alibaba-AndFix Bug热修复框架
- AndFix Bug热修复框架的使用
- Android 热修复框架 AndFix的使用及demo
- Android AndFix 热修复框架
- Android AndFix 热修复框架
- Android热修复框架andfix
- Android AndFix 热修复框架
- Android 热修复框架AndFix
- Alibaba-Dexposed框架在线热补丁修复的使用
- Alibaba-Dexposed框架在线热补丁修复的使用
- Alibaba-Dexposed框架在线热补丁修复的使用
- Android 热修复AndFix的简单使用介绍
- Android热修复(一):AndFix的使用
- 错误记录(八)could not initialize proxy
- 2017.05.27回顾
- Banana Pi M2U系列之二:Uboot编译
- 获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger
- jsoup解析网页出现转义符问题
- Android最详细的Alibaba-AndFix 热修复框架的使用
- Spring Boot下如何自定义Repository中的DAO方法
- Jquery设置select控件指定text的值为选中项
- MySQL5.7安装步骤
- NSNotificationCenter 的使用详解
- linux proc maps文件分析
- 学习kotlin第七天_类与继承、属性与字段
- ByteBufferMessageSet分析
- Laravel 5 程序优化技巧