常见问题

Issue 反馈

建议提在TinkerPatch Issue上,方便跟进状态。 也可以加入Slack Group来进行讨论。 作者也活跃在Tinker官方的QQ群(377388954)。

TinkerPatch 平台与 Tinker 项目的关系?

TinkerPatch 平台是为了更加方便大家使用 Tinker 项目而搭建的,它的 Github 地址为TinkerPatch。后期平台将逐步迭代,例如推出ABTest/Alpha/安全模式等功能。

TinkerPatch 平台是否有补丁 Push 功能?

TinkerPatch 平台默认不提供补丁 Push 推送功能,大家利用自己的 Push 通道可以很方便的与平台结合起来。例如定义补丁更新的 Push 消息类型,客户端收到消息后调用以下函数即可:

TinkerPatch.with().fetchPatchUpdate(true);

TinkerPatch 自动反射 Application 的风险?

Tinker 为了实现 Application 类可修改,需要对 Application 做改造,详细可参考自定义Application类 .

这对很多应用来说,很大程度造成不少的接入成本。 TinkerPatch 平台通过自动反射 Application,可以实现无缝接入。事实上,对于反射失败的情况,我们会自动回退到代理 Application 生命周期模式,防止因为反射失败而造成应用无法启动的问题。

通过线上统计,大约有 1/1W的反射失败率。我们更加推荐大家使用 Tinker 的方式改造自身的 Application, 使兼容性高。

TinkerPatch 自动反射 Library 的风险?

Tinker 默认没有直接将补丁的 library 路径添加到 DexPathList 中,这里主要是考虑在多abi的情况下,某些机器获取的并不准确。我们需要手动加载补丁的 Library 文件,对于第三方的库文件更加难控制。

TinkerPatch 平台采用了严格的算法判别系统最终采用的 abi,线上统计的反射成功率在99.98%以上。在反射失败时,也做了自动回退等实现。大家可以根据自己的项目情况,选择使用 Tinker 推荐的方式,还是直接反射的方式。

这里需要注意的是,只有调用了 reflectPatchLibrary 反射接口后面加载的补丁 Library 才会生效。

TinkerPatch SDK 采用的 TinkerId?

TinkerPatch SDK 默认采用 appVersion 作为 TinkerId, 我们需要保证每个发布出去的基准安装包的 appVersion 都不一致。

我们可以使用 versionName 或者 githash 作为 appVersion.

如何回滚

可以简单删除当前appVersion控件来完成回滚,客户端会回滚到没有安装补丁的状态。后续可以重新建立同名appVersion。

TinkerPatch.com © 2017 Github开源 | 用户协议 |联系我们