TinkerPatch SDK 初始化

初始化TinkerPatchSDK,无需考虑Tinker是如何下载/合成/应用补丁包,也无需引入Tinker的相关类。

reflectApplication = true 的情况

若使用reflectApplication模式,我们无需为接入Tinker而改造我们的Application类。初始化SDK可参考tinkerpatch-easy-sample中的SampleApplication

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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,无法使补丁生效

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2021 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :