Android热修复之 - 阿里开源的热补丁
1.1 基本介绍
我们先去github上面了解它https://github.com/alibaba/AndFix
1.2 生成apatch包
假如我们收到了用户上传的崩溃信息,我们改完需要修复的Bug,这个时候就会有一个新的的apk我们就叫它为new.apk,原来的那个有Bug的apk你也有我们就叫它old.apk。这个时候我们就可以利用阿里github上面提供的工具生成一个xxxx.apatch包用于修复Bug。
命令是:apkpatch.bat -f <new> -t <old> -o <output> -k <keystore> -p <> -a <alias> -e <>
-f : 没有Bug的新版本apk
-t : 有bug的旧版本apk
-o : 生成的补丁文件所放的文件夹
-k : 签名打包密钥
-p : 签名打包密钥密码
-a : 签名密钥别名
-e : 签名别名密码(这样一般和密钥密码一致)
我的是这样子:
apkpatch.bat -f new.apk -t old.apk -o out -k joke.jks -p 240336124 -a 内涵段子 -e 240336124
生成的补丁:
1.3 修复apatch包
怎么获取apatch包呢?我们肯定是请求接口获取下载我们的修复好的apatch包,当然有可能没有就太好了佛祖保佑。下载下来之后我们就可以调用方法进行修复了,我们可以暂时放在本地测试一下,这些代码肯定之前就得写好:
public class BaseApplication extends Application {// Patch管理类public static PatchManager mPatchManager;@Overridepublic void onCreate() {super.onCreate();// 捕捉崩溃信息ExceptionCrashHandler.getInstance().init(this);// Ali热修复try {mPatchManager = new PatchManager(this);// 初始化patch版本String pkName = this.getPackageName();String versionName = getPackageManager().getPackageInfo(pkName, 0).versionName;// 初始化版本名称 mPatchManager.init(versionName);// 加载之前的patch mPatchManager.loadPatch();} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}} }
主页面MainActivity
1 public class MainActivity extends BaseSkinActivity { 2 3 @Override 4 protected void initData() { 5 // 获取上次的崩溃信息 6 File crashFile = ExceptionCrashHandler.getInstance().getCrashFile(); 7 // 上传到服务器,后面再说....... 8 } 9 10 @Override 11 protected void initView() { 12 13 } 14 15 @Override 16 protected void setContentView() { 17 setContentView(R.layout.activity_main); 18 } 19 20 @Override 21 protected void initTitle() { 22 23 } 24 25 @Onclick(R.id.test) 26 public void test(View view) { 27 // 没有修复之前会报异常闪退 28 Toast.makeText(this, Utils.test(), Toast.LENGTH_LONG).show(); 29 } 30 31 @Onclick(R.id.ali_fix) 32 public void aliHotFix(View view) { 33 try { 34 // 测试 目前暂且放在本地 35 String patchFileString = Environment.getExternalStorageDirectory()+"/fix.apatch"; 36 Log.e("TAG", patchFileString); 37 // 修复apatch,不需要重启可立即生效 38 BaseApplication.mPatchManager.addPatch(patchFileString); 39 Toast.makeText(this, "Bug修复成功", Toast.LENGTH_LONG).show(); 40 } catch (Exception e) { 41 e.printStackTrace(); 42 Toast.makeText(this, "Bug修复失败", Toast.LENGTH_LONG).show(); 43 } 44 } 45 }
运行的效果就在最上面,如果直接点击测试会报异常闪退,当我们点击完阿里开源热修复后再次点击测试,发现不闪退了。接下来的内容你可能要看不懂了请做好准备。
1.4 正式开发需要注意的地方:
http://www.cnblogs.com/ganchuanpu/p/8184554.html
Android热修复之 - 阿里开源的热补丁相关推荐
- Android热修复之 阿里开源的热补丁
1.概述 上一期讲到Android热修复之 - 收集崩溃信息上传至服务器,我们获取到用户手中上线的崩溃信息上传到服务器后该怎么办?如果直接发布版本要用户去下载肯定不乐意.这一期我们来看一下怎么去打 ...
- android热补丁作用,Android热修复之 - 阿里开源的热补丁
这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是怎么实现的. 1.2 生成apatch包 假如我们收到了用户上传的崩溃信息,我们改完需要修复的Bug,这个时候就会有 ...
- Android热修复(1):热修复的介绍和原理解析
一.热修复的产生概述 在开发中我们会遇到如下的情况: 1.刚发布的版本出现了严重的bug,这就需要去解决bug.测试并打渠道包在各个应用市场上重新发布,这会耗费大量的人力物力,代价会比较大. 2.已经 ...
- 服务器中的热修复怎么做,Android 热修复(全网最简单的热修复讲解)
首先!我们抛开网上的热修复框架不谈,我们来通过原理手动实现一个热修复工具,在撸码之前我们先通过一张图来了解热修复的流程. Android热修复 ACCCB328-AF5C-4BD9-AD08-6F7D ...
- linux内核热修复,揭露内核黑科技 - 热补丁技术真容
原创 理查德 Linux阅码场 6月12日 内核热补丁是一种无需重启操作系统,动态为内核打补丁的技术.系统管理员基于该技术,可以在不重启系统的情况下,修复内核BUG或安全漏洞,可以在最大程度上减少系统 ...
- Android热修复技术原理详解(最新最全版本)
本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...
- Android热修复——深入剖析AndFix热修复及自己动手实现
前言 去年写过一篇热修复的文章,那时候刚开始接触,照猫画虎画的还算比较成功.但是那种修复需要重新启动APP,也就是在JAVA层实现的热修复.我们知道目前Android主流的修复还有在Native层实现 ...
- 干货满满,Android热修复方案介绍
摘要:在云栖社区技术直播中,阿里云客户端工程师李亚洲(毕言)从技术原理层面解析和比较了业界几大热修复方案,揭开了Qxxx方案.Instant Run以及阿里Sophix等热修复方案的神秘面纱,帮助大家 ...
- Android热修复学习之旅——HotFix完全解析
在上一篇博客 Android热修复学习之旅开篇--热修复概述中,简单介绍了各个热修复框架的原理,本篇博客我将详细分析QQ空间热修复方案. Android dex分包原理介绍 QQ空间热修复方案基于An ...
最新文章
- python官网如何调中文-django的settings中设置中文支持的实现
- wxWidgets:wxFTP类用法
- JavaScript 的性能优化:加载和执行
- python什么是入口文件_Python注释是什么东东
- Node.js基础学习(第二幕)
- mysql dbutil_DBUtil
- 灰色按钮克星v.10
- 数据库 --- 约束
- 依赖注入框架 ----Dagger2 使用详解及源码分析
- 48种世间哲学,其中值得借鉴的有10个
- 反爬虫破解——裁判文书网
- 5个免费商用音频素材网站
- cnzz.php,PHP curl抓取cnzz统计数据
- Python正则表达式及match函数的用法
- 解除计算机屏保密码设置密码,win10屏保密码怎么取消_如何取消Windows10锁屏密码...
- RFID定位之隧道人员定位系统解决方案--新导智能
- 【软件架构】Michael Perry关于不可变架构、CAP定理和CRDTs
- CDN-直播-点播-技术简介
- 详述 Java 语言中的格式化输出
- 一文了解K8s-概念详解