TinkerPatch SDK 初始化
初始化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
,无法使补丁生效
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/29/tinkerpatch-sdk-initialization/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论