初始化TinkerPatch的SDK,无需考虑Tinker是如何下载/合成/应用补丁包,也无需引入Tinker的相关类。
reflectApplication = true 的情况
若使用reflectApplication模式,我们无需为接入Tinker而改造我们的Application类。初始化SDK可参考tinkerpatch-easy-sample中的SampleApplication类
public class SampleApplication extends Application {
...
@Override
public void onCreate() {
super.onCreate();
// 可以从这里获得Tinker加载过程的信息
tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
// 初始化TinkerPatch SDK, 更多配置可参照API章节中的, 初始化SDK
TinkerPatch.init(tinkerApplicationLike)
.reflectPatchLibrary()
.setPatchRollbackOnScreenOff(true)
.setPatchRestartOnSrceenOff(true)
.setFetchPatchIntervalByHours(3);
// 每隔3个小时(通过setFetchPatchIntervalByHours设置)去访问后台时候有更新, 通过handler实现轮训的效果
TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
}
...
}
我们将 Tinker 加载补丁过程的结果存放在 TinkerPatchApplicationLike 中。
reflectApplication = false 的情况
若我们已经完成应用的Application改造,即将Application的逻辑移动到ApplicationLike类中。我们可以参考tinkerpatch-sample中的SampleApplicationLike类
public class SampleApplicationLike extends DefaultApplicationLike {
...
@Override
public void onCreate() {
super.onCreate();
// 初始化TinkerPatch SDK, 更多配置可参照API章节中的, 初始化 SDK
TinkerPatch.init(this)
.reflectPatchLibrary()
.setPatchRollbackOnScreenOff(true)
.setPatchRestartOnSrceenOff(true)
.setFetchPatchIntervalByHours(3);
// 每隔3个小时(通过setFetchPatchIntervalByHours设置)去访问后台时候有更新, 通过handler实现轮训的效果
TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
}
...
}
注意:初始化的代码建议紧跟
super.onCreate(),并且所有进程都需要初始化,已达到所有进程都可以被patch的目的如果确定只想在主进程中初始化
tinkerPatch,那也请至少在:patch进程中初始化,否则会有造成:patch进程crash,无法使补丁生效




