当前位置:主页 > 非常文档
Android 热补丁平台
日期:2018-01-08 浏览量:

SDK 所有的 API 都位于 TinkerPatch.java 中, 我们可以非常简单的使用起来,我们也可以参考 TinkerPatch 中的 Sample.

TinkerPatch 接口 1. 初始化 SDK

初始化 SDK 有两个接口,推荐使用默认接口

默认接口(推荐使用): //接口定义 public static TinkerPatch init(ApplicationLike applicationLike); //接口使用事例 TinkerPatch.init(applicationLike);

详细的TinkerPatch SDK的初始化接口:

TinkerPatch.init(tinkerApplicationLike) //是否自动反射Library路径,无须手动加载补丁中的So文件 注意,调用在反射接口之后才能生效,你也可以使用Tinker的方式加载Library .reflectPatchLibrary() //向后台获取是否有补丁包更新,默认的访问间隔为3个小时,若参数为true,即每次调用都会真正的访问后台配置 //你也可以在用户登录或者APP启动等一些关键路径,使用fetchPatchUpdate(true)强制检查更新 .fetchPatchUpdate(false) //设置访问后台补丁包更新配置的时间间隔,默认为3个小时 .setFetchPatchIntervalByHours(3) //向后台获得动态配置,默认的访问间隔为3个小时 //若参数为true,即每次调用都会真正的访问后台配置 .fetchDynamicConfig(new ConfigRequestCallback() { @Override public void onSuccess(HashMap<String, String> hashMap) { } @Override public void onFail(Exception e) { } }, false) //设置访问后台动态配置的时间间隔,默认为3个小时 .setFetchDynamicConfigIntervalByHours(3) //设置当前渠道号,对于某些渠道我们可能会想屏蔽补丁功能;设置渠道后,我们就可以使用后台的条件控制渠道更新 .setAppChannel("default") //屏蔽部分渠道的补丁功能 .addIgnoreAppChannel("googleplay") //设置tinkerpatch平台的条件下发参数 .setPatchCondition("test", "1") //设置补丁合成成功后,锁屏重启程序,默认是等应用自然重启 .setPatchRestartOnSrceenOff(true) //我们可以通过ResultCallBack设置对合成后的回调,例如弹框什么 //注意,setPatchResultCallback 的回调是运行在 intentService 的线程中 .setPatchResultCallback(new ResultCallBack() { @Override public void onPatchResult(PatchResult patchResult) { Log.i(TAG, "onPatchResult callback here"); } }) //设置收到后台回退要求时,锁屏清除补丁,默认是等主进程重启时自动清除 .setPatchRollbackOnScreenOff(true) //我们可以通过RollbackCallBack设置对回退时的回调 .setPatchRollBackCallback(new RollbackCallBack() { @Override public void onPatchRollback() { Log.i(TAG, "onPatchRollback callback here"); } });

只需要传入 applicationLike 实例即可初始化 SDK。

注意,setPatchResultCallback 的回调是运行在 intentService 的线程中。

自定义接口(谨慎使用):

若我们想自定义 Tinker 中的某个自定义类,而不使用TinkerPatch提供的默认实现,可采用以下接口

// 接口定义 public static TinkerPatch init(TinkerPatch tinkerPatch); // 接口使用事例 TinkerPatch.Builder builder = new TinkerPatch.Builder(applicationLike); // 可自定义以下几个类,大家可以选择需要复写的类 // tinker 中的 PatchListener 类 builder.listener() // tinker 中的 LoadReporter 类 .loadReporter() // tinker 中的 PatchReporter 类 .patchReporter() // tinker 中的 ResultServer 类 .resultServiceClass() // tinker 中的 AbstractPatch 类 .upgradePatch() // tinkrpatch 中的 请求回调类 .patchRequestCallback(); // 初始化 TinkerPatch.init(builder.build());

对于 Tinker 的自定义类可参考 Tinker 文档:Tinker 自定义扩展。一般来说,我们并不建议大家自己实现 Tinker的相关自定义类。更建议大家使用 TinkerPatch 的回调接口实现,自定义某些类可能会导致 TinkerPatch 平台的某些上报失效。

在初始化 SDK 后, 我们可以通过以下 API 获得 实例

TinkerPatch tinkerPatch = TinkerPatch.with(); 2. 重定向日志输出

你可以设置自己的Log输出实现:

TinkerPatch.setLogIml(imp); 3. 自动加载补丁的 Library

默认 Tinker 中需要手动加载补丁中的 Library 更改, 可参考 Tinker 文档. TinkerPatch 平台实现了一键反射 Library 路径,在调用接口后即可自动优先加载补丁中的 Library 文件。

TinkerPatch.with().reflectPatchLibrary(); 4. 向后台请求补丁升级配置

向后台获取是否有补丁包更新,默认的访问间隔为3个小时,若参数immediately为 true,即每次调用都会真正的访问后台是否有更新。

TinkerPatch.with().fetchPatchUpdate(false);

如果你希望补丁更新更佳及时,可以在APP启动或用户登录等一些关键路径,使用 fetchPatchUpdate(true) 强制检查更新,即:

TinkerPatch.with().fetchPatchUpdate(true);

我们可以通过以下方法,设置访问的时间间隔,单位为小时。若为 -1,即禁止以后都不再请求后台补丁更新。

TinkerPatch.with().setFetchPatchIntervalByHours(1); 5. 向后台请求在线参数配置
相关文章:
·恶意软件Shamoon将文档变成攻击武器
·Office惊现零时漏洞 黑客可利用Word文档安装恶意软
·警惕你的PDF文档 腾讯安全专家一年发现过百漏洞
·福昕软件:全球PDF电子文档核心技术与应用领域领
·石墨文档成为创业公司文档协同软件的首选
→ 特别推荐
恶意软件Shamoon将文档
Office惊现零时漏洞 黑
警惕你的PDF文档 腾讯
福昕软件:全球PDF电子
石墨文档成为创业公
WPS Office增值服务 轻盈
pdf文档怎么修改?如
永中DCS玩转文档预览
【文件管理】文件管
word文档下载2014(wps
TeamDoc文档管理软件免
软件开发文档
如何写软件设计文档
Windows平台发现勒索软
Google Go 1.8.3发布,修
→ 热点TOP10
数据防泄密,
社论-郭瑶琪
中国汉字差点
迅捷PDF编辑器
WannaCry勒索软件
印象笔记·扫描
2010版本Office转
pdf转换成word哪
ROST文档相似性
TOP8个人文件管

友情链接/网站合作咨询: