热更新API接口
安装Tinker(无参)
Beta.installTinker();
此接口仅用于反射Application方式接入。
安装Tinker
Beta.installTinker(this);
此接口仅用于改造Application方式接入,参数为ApplicationLike对象。
用户自定义扩展Tinker接口
// or you can just use DefaultLoadReporter
LoadReporter loadReporter = new SampleLoadReporter(getApplication());
// or you can just use DefaultPatchReporter
PatchReporter patchReporter = new SamplePatchReporter(getApplication());
// or you can just use DefaultPatchListener
PatchListener patchListener = new SamplePatchListener(getApplication());
// you can set your own upgrade patch if you need
AbstractPatch upgradePatchProcessor = new UpgradePatch();
// you can set your own repair patch if you need
AbstractPatch repairPatchProcessor = new RepairPatch();
TinkerManager.TinkerPatchResultListener patchResultListener = new TinkerManager.TinkerPatchResultListener() {
@Override
public void onPatchResult(PatchResult result) {
// you can get the patch result
}
};
Beta.installTinker(this, loadReporter, patchReporter, patchListener, patchResultListener, upgradePatchProcessor, repairPatchProcessor);
此接口仅用于改造Application方式接入。
加载指定路径的补丁
Beta.applyTinkerPatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed_7zip.apk");
加载Arm架构so库
Beta.loadArmLibrary(getApplicationContext(), "mylib");
只能用于加载armabi架构的so文件。
加载Arm-v7架构so库
Beta.loadArmV7Library(getApplicationContext(), "mylib");
只能用于加载armabi-v7a架构的so文件。
通用加载so库接口
Beta.loadLibrary("mylib");
通用加载so接口,我们自动帮你加载指定架构的so。
清除补丁
Beta.cleanTinkerPatch();
注:清除补丁之后,就会回退基线版本状态。
主动检查更新
Beta.checkUpgrade();
用于主动检查补丁策略的接口。
设置是否允许自动下载补丁
Beta.canAutoDownloadPatch = true;
默认为true,如果想选择下载补丁的时机,设置为false即可。
设置是否允许自动合成补丁
Beta.canAutoPatch = true;
默认为true,如果想选择合成补丁的时机,设置为false即可。
设置是否显示弹窗提示用户重启
Beta.canNotifyUserRestart = false
默认为false,如果想弹窗提示用户重启,设置为true即可。
用户主动下载补丁文件
Beta.downloadPatch();
适用于Beta.canAutoDownloadPatch = false;的情况。 开发者自己选择下载补丁的时机。
用户主动合成补丁
Beta.applyDownloadedPatch();
适用于Beta.canAutoPatch = true;的情况。 开发者自己选择合成补丁的时机。
补丁回调接口
Beta.betaPatchListener = new BetaPatchListener() {
@Override
public void onPatchReceived(String patchFile) {
Toast.makeText(getApplication(), "补丁下载地址" + patchFile, Toast.LENGTH_SHORT).show();
}
@Override
public void onDownloadReceived(long savedLength, long totalLength) {
Toast.makeText(getApplication(),
String.format(Locale.getDefault(), "%s %d%%",
Beta.strNotificationDownloading,
(int) (totalLength == 0 ? 0 : savedLength * 100 / totalLength)),
Toast.LENGTH_SHORT).show();
}
@Override
public void onDownloadSuccess(String msg) {
Toast.makeText(getApplication(), "补丁下载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onDownloadFailure(String msg) {
Toast.makeText(getApplication(), "补丁下载失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onApplySuccess(String msg) {
Toast.makeText(getApplication(), "补丁应用成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onApplyFailure(String msg) {
Toast.makeText(getApplication(), "补丁应用失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onPatchRollback() {
Toast.makeText(getApplication(), "补丁回滚", Toast.LENGTH_SHORT).show();
}
};
我们提供了补丁下载、合成各个时机的回调接口,方便开发者控制补丁的生命周期。