android AndFix

AndFix(Android Fix)是一个开源的Android库,它允许开发者在应用发布后,仍然能够修复运行时遇到的bug。AndFix的主要功能是通过热修复技术,在不重新安装应用的情况下,动态地修复应用的代码错误、资源错误以及配置错误。
AndFix的主要特点包括:
1. "运行时修复":AndFix能够在应用运行时动态地替换或修复代码,无需用户重新安装应用。 2. "支持多种错误类型":它可以修复代码错误、资源错误以及配置错误。 3. "兼容性强":AndFix兼容多种Android版本和设备。 4. "易于集成":AndFix提供了简单的API,使得开发者可以方便地集成到自己的项目中。
### 安装AndFix
要使用AndFix,首先需要在项目中添加依赖。以下是一个示例:
```gradle dependencies { implementation 'com.google.android.andfix:andfix:4.5.3' } ```
### 配置AndFix
在`AndroidManifest.xml`文件中,需要添加AndFix的配置:
```xml ... ... ```
### 使用AndFix
使用AndFix修复bug,通常需要以下几个步骤:
1. "构建补丁":使用AndFix提供的命令行工具构建补丁文件。 2. "上传补丁":

相关内容:

AndFix介绍

AndFix,全称是Androidhot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件

原理

替代方式

AndFix判断java自定义的声明方法是否应该被替代,它在ATR上使用art的替代方法,在X86上使用dalvik的替代方法,加载方式是不同的,对于Dalvik来说,需要改变本地的目标文件,连接成AndFix自己的加载方式,这种方式需要注册回掉;对于ART来说,只需要改变自身的ArtMethod属性来取代它

修复过程

使用方式

1.添加AndFix依赖包

?

1

compile 'com.alipay.euler:andfix:0.3.1@aar'

2.在application中初始化

2

3

patchManager = new PatchManager(getApplicationContext);

patchManager.init(version);//current version

patchManager.loadPatch;

这里涉及到一个版本问题,如果版本好相同的情况下,有补丁会去加载,如果版本好不相同的情况下,默认补丁会被删除

3.添加新补丁

patchManager.addPatch(path);//path of the patch file that was downloaded

这个方法最好放在你的补丁已经下载的完成之后,还有一个个人遇到的问题,在这里提醒一下大家,这个补丁的名字不能相同,补丁文件在文件名字相同的情况下,它会直接去加载
data/packagename/files/apatch_opt这个目录下的文件,所以不同的补丁要使用不同的名字,并且同一个补丁只会加载一次,加载完了可以删除

生成补丁的工具

官方提供的工具apkpatch

下载解压之后长这样:

.bat是留给window用的

.sh是OSX用的<喎�"
http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;"> ./apkpatch.sh -f new.apk-t old.apk -o output1 -k debug.keystore -p android -a androiddebugkey -e android -f :新版本 -t : 旧版本 -o : 输出目录 -k : 打包所用的keystore -p : keystore的密码 -a : keystore 用户别名 -e : keystore 用户别名密码

这是我本地使用的命令:

两个apk之间的变换都会在这里实现出来,当然只能改变方法,不能改变UI方面的东西

生成这么个东西:

上面这个.apatch的文件就是补丁啦!

混淆

4

5

-keep class * extends java.lang.annotation.Annotation

-keepclasseswithmembernames class * {

native ;

}

-keep class com.alipay.euler.andfix.** { *; }

多次打补丁

如果本地保存了多个补丁,那么AndFix会按照补丁生成的时间顺序加载补丁。具体是根据.apatch文件中的PATCH.MF的字段Created-Time。

安全性

开发者需要验证下载过来的apatch文件的签名是否就是在使用apkpatch工具时使用的签名,如果不验证那么任何人都可以制作自己的apatch文件来对你的APP进行修改。

官网还有一条,需要验证optimize file的指纹。

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章