Android在线修复bug框架AndFix调研
来源:互联网 发布:ipad好用软件 编辑:程序博客网 时间:2024/05/14 13:01
最近,阿里低调发布了一个新的框架AndFix,这个框架可以让应用在不发布新版本的情况下,在线修复一些bug。
这简直是程序员的福音啊,果断在github上Watch该项目,下面跟我一起体验一下,看看是不是真的。
Andfix 简介
Andfix 项目地址
Andfix工作的原理:方法体的替换
Bug修复流程如下:
看完流程图,你可能也一头雾水,接下来我们实际操作一下。
操作流程
代码check下来之后,目录结构有些乱,需要自己调整一下,运行sample。
- import samples/AndFixDemo 到自己的IDE中,设置AndFixDemo 依赖于AndFix(library project or aar)。
- build项目,保存编译后的结果为1.apk,安装apk到设备中。
- 修改com.euler.test.A, 引用com.euler.test.Fix。
- build 项目, 保存为 2.apk.
- 使用apkpatch工具制作一个补丁。
- 重命名补丁文件为out.apatch,然后将文件拷贝到sd卡中。
- 运行 1.apk 查看logcat。
官方的demo通过日志演示了两次补丁前后,日志文件发生了变化,不是很明显。我简单更改了一下,流程参考上面。
1.首先发布一个有bug的版本(使用正式签名),点击会发生崩溃,名字叫MainActivityOld.apk
2.接下我们修复bug,并发布新的版本MainActivityNew.apk
新版本中修复了点击崩溃的bug,同时也更改了一些资源文件,见上图
3. 使用apkpatch工具制作一个补丁
我们要制作一个补丁,然后将这个补丁打入MainActivityOld.apk中,apkpatch使用方法如下
生成的文件如下:
smali文件不用多说了吧,Dalvik虚拟机能够运行的字节码。
MainActivityNew-710d4003e03a6a0b1a147819c50570f1.apatch是生成的补丁文件。修改多出就会产生多个补丁文件,多个补丁文件需要使用
apkpatch -m
命令进行合并才能供应用使用。
diff.dex这是个什么鬼,还不清楚。
4.使用补丁
下面我们就要对安装了MainActivityOld.apk的设备进行打补丁,将MainActivityNew-710d4003e03a6a0b1a147819c50570f1.apatch命名为out.apatch
使用adb push命令将out.apatch放到手机的sd卡根目录。别问我为啥要放到这里,为啥要命名为out.apatch,因为这是在demo里写死的,后期自己改。
5.运行MainActivityOld.apk ,点击按钮,如下图
日志中可以看到补丁已经被added,此时即使删掉sd卡中的补丁文件,应用也不会再崩溃了。
总结
我们验证了一下这个框架,确实可以在不升级应用的情况下,修复一些紧急的代码级别的bug,很佩服作者的思路。不过这个框架目前还存在一些不足,还需要进一步完善。
1. 只修改了一行代码,生成的patch文件就有3k ,如果稍微大一些的项目,补丁文件的大小就比较可观了。所以补丁文件工具还待优化
2. 细心的同学可能发现了,资源文件并没有打入patch中,新版本中更改了布局资源文件,打完后,老版本的UI并没有变。如果新版本代码中,有资源文件的引用,很容易引入资源文件找不到的bug
3.部分设备的兼容性还需进一步测试
有兴趣的同学可以研究一下,有问题可以一起交流
原文地址:http://blog.csdn.net/wangyuetingtao/article/details/48497921
- Android在线修复bug框架AndFix调研
- Android在线修复bug框架AndFix调研
- 关于Android APP在线热修复bug方案的调研(一)(AndFix)
- Android 在线热修复框架 AndFix 初步
- Android不发版也能在线修Bug?——AndFix 框架
- Android不发版也能在线修Bug?——AndFix 框架
- Android不发版也能在线修Bug?——AndFix 框架
- Android AndFix 热修复框架
- Android AndFix 热修复框架
- Android热修复框架andfix
- Android AndFix 热修复框架
- Android 热修复框架AndFix
- 使用Alibaba-AndFix Bug热修复框架
- AndFix Bug热修复框架的使用
- android AndFix热补丁框架(不发版本,修复线上bug)
- Android热修复框架之AndFix
- Android热修复框架——AndFix
- Android 热修复框架 AndFix (一)
- Bearer
- 搭建自己的博客系统
- shell中set 指令的使用
- chmod 4755和chmod 755的区别
- html5 新增元素
- Android在线修复bug框架AndFix调研
- SQL 语句行数据拆成多行及多行数据合并成一行的方法
- 回望2016,展望2017
- 冒泡排序算法
- iOS开发之银联支付集成
- scala解决八皇后问题
- 如果你的错误是 javax.servlet.UnavailableException: Parsing error processing resource path /WEB-INF/struts-c
- iOS 关于tableView cell的分割线的一些设置
- js 和 安卓互相调用