Andfix的简单使用

Posted by alonealice on 2016-06-12

简介

AndFix是"Android hot-fix"的简写,用于在线解决Android应用程序的bugs的Android库。AndFix支持Android2.3到Android6.0,支持ARM和X86架构。

原理

实现原理是通过改变内部方法来修改bugs

修改过程

使用方法

1.添加依赖库

1
2
3
dependencies {
compile 'com.alipay.euler:andfix:0.4.0@aar'
}

2.在应用启动时初始化

1
2
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version

3.在启动时加载补丁

1
patchManager.loadPatch();

4.在开启页面下载新补丁

1
patchManager.addPatch(path); //path是文件保存的地址

补丁制作工具

AndFix提供了apkpatch工具用于制作补丁
下载地址
制作过程:
1.先要有一个原始包和一个修改过bugs的包
2.在apkpatch工具目录使用以下命令制作补丁文件

1
2
3
4
5
6
7
8
9
apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <> -a <alias> -e <>
-a,--alias <alias> keystore entry alias.
-e,--epassword <> keystore entry password.
-f,--from <loc> new Apk file path.
-k,--keystore <loc> keystore path.
-n,--name <name> patch name.
-o,--out <dir> output dir.
-p,--kpassword keystore password.
-t,--to <loc> old Apk file path.

存在的问题

  • 在64位平台上使用会崩溃
    崩溃日志
1
Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8000112cbc010 in tid 31274

解决办法:强制使用armeabi平台上的引用包

1
2
3
4
5
6
7
8
splits {
abi {
enable true
reset()
include 'armeabi'
universalApk false
}
}
  • 同一个方法不能修改多次
    同一个方法修改多次会报错
    修改办法:在addPatch前先删除之前的patch
1
2
patchManager.removeAllPatch();
patchManager.addPatch(path);

demo地址

AndFixDemo

项目地址

AndFix