您的位置:首页 > 移动开发 > Android开发

android 热修补AndFix

2016-11-14 22:25 169 查看
好久没有写博客了,借着最近比较闲,研究了一下热修补的实现。    搜了好多资料,实现热修补大体分两种方法    1.使用dex 的分包机制。    2.使用第三方开源

1.使用dex 的分包机制。比较麻烦,你需要先了解dex是如何分包的实现的,具体可以参考http://kymjs.com/code/2016/05/08/01

2.使用第三方开源,DexposedAndFix   其中Dexposed 支持2.3到4.0 系统,不包括3.0 但是到了5.0就不好使了,所以这不是我们今天要讲的。   那就讲讲andFix  全称 Android HotFix 直接说主题吧。

使用方式

   1.首先添加依赖   compile'com.alipay.euler:andfix:0.3.1@aar'   2.在Application.onCreate() 中添加以下代码
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
patchManager.loadPatch();注意每次appversion变更都会导致所有补丁被删除,如果appversion没有改变,则会加载已经保存的所有补丁。
 3.然后在需要的地方调用PatchManager的addPatch方法加载新补丁,比如可以在下载补丁文件之后调用。
 4.之后就是打补丁的过程了,首先生成一个apk文件,然后更改代码,在修复bug后生成另一个apk。  通过官方提供的工具apkpatch  生成一个.apatch格式的补丁文件,需要提供原apk,修复后的apk,以及一个签名文件。  可以直接使用命令apkpatch查看具体的使用方法。
 使用示例:
  1. mac OS   使用命令./apkpatch.sh  -f new.apk -t old.apk -o output1 -k test.keystore  -p 111111 -a test -e 111111;  2. window  使用命令 apkpatch.bat -f new.apk -t old.apk -o output1 -k test.keystore  -p 111111 -a test -e 111111;  注意:不管是哪个系统,都要先进入工具的根目录下 然后操作,必须签名保证路径等信息正确。  具体命令可以参考   命令执行如下:   生成如下三个文件, .apatch就是我们要的文件       你可以在本地建个文件夹,将.apatch放在本地测试下具体是这样的,手机先安装有bug的apk  通过一个button点击调用     
String  path_all = Environment.getExternalStorageDirectory()+File.separator+ "apatch_path"+File.separator+"123.apatch";
    
patchManager.addPatch(path_all);
 这样就ok了,然后退出本类,再次进入看到的就是你修复后的代码了5.通过网络传输或者adb push的方式将apatch文件传到手机上,然后运行到addPatch的时候就会加载补丁。
加载过的补丁会被保存到data/packagename/files/apatch_opt目录下,所以下载过来的补丁用过一次就可以删除了。
 参考文献:http://www.jianshu.com/p/479b8c7ec3e3    https://github.com/dodola/HotFix
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android java android平台