准备工作:
1.添加aar包依赖:
compile 'com.alipay.euler:andfix:0.5.0@aar'
2.添加读写权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
备注:阿里巴巴的andfix框架不能更新res文件夹中的文件只能更新java代码,在这个坑里停留许久
接下来是代码:
public class TApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
PatchManager patchManager = new PatchManager(this);
String appversion= null;
try {
appversion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Log.e("onCreate: ",appversion );
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
patchManager.init(appversion);//current version
patchManager.loadPatch();
try {
patchManager.addPatch("/sdcard/a.apatch");
Log.e( "onCreate: ","11222" );
} catch (IOException e) {
e.printStackTrace();
}
}
}
addpath是添加更新的补丁包,指定路径后执行重启后就可以实时更新代码了,
接下来是生成补丁的操作,你需要2个apk一个新apk和一个旧的apk,还有一个是签名包keystone
官网上下载代码在Fix\tools这个文件夹中有一个apkpatch-1.0.3.zip包
解压后控制台运行到这个包里,将需要的三个文件放在这个包里执行命令:
apkpatch -o C:\Users\noname\Desktop\AndFix-master\tools\apkpatch-1.0.3 -k key2.jks -p hfc123 -a fix -e hfc123 -f app-release-bug.apk -t app-release.apk
接下来会生成以.apatch结尾的文件,将这个文件放入你指定的文件夹内重命名执行addpatch就可以了
以上便完成了补丁包的生成
接下来放上代码实现安装apk 的代码也许能用上:
public static void install(Context context) {
mContext = context;
// 核心是下面几句代码
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(mUrl)),
"application/vnd.android.package-archive");
mContext.startActivity(intent);
}