Android最详细的Alibaba-AndFix 热修复框架的使用
2017-05-31 16:28
621 查看
最详细的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热修复框架AndFix原理解析及使用
- Alibaba-AndFix Bug热修复框架的使用
- Android热修复框架AndFix原理解析及使用
- Alibaba-AndFix Bug热修复框架的使用
- Alibaba-AndFix Bug热修复框架的使用
- 使用Alibaba-AndFix Bug热修复框架
- Android中热修复框架AndFix原理解析及案例使用
- Android热修复框架AndFix原理解析及使用
- Android热修复框架AndFix原理解析及使用
- Alibaba-AndFix Bug热修复框架的使用
- Android 热修复框架 AndFix的使用及demo
- Android AndFix 热修复框架
- Android-AndFix 热修复框架原理及源码解析
- Alibaba-AndFix Bug热修复框架原理及源码解析
- Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
- Android在线修复bug框架AndFix调研
- Android AndFix 热修复框架
- Android AndFix 热修复 使用
- Android 在线热修复框架 AndFix 初步
- Android 热修复 - AndFix 使用心得