常见问题

Google Play 使用限制

对于通过 Google Play 分发的应用,Google Play 要求应用不得采用 Google Play 更新机制以外的其他任何方式修改、替换或更新应用本身。同样地,应用不得从 Google Play 以外的来源下载可执行代码(例如 dex、JAR 和 .so 文件)。因此应用接入热修复组件将会导致您的应用无法通过 Google Play 应用市场发布审核。详情请参考 Google Play 政策中心 > 设备和网络滥用

BuildNo应当如何定义

您每一个打包生成的正式Apk都需要定义一个唯一的BuildNo,用于构建热修复时的标识。BuildNo通常由应用版本 + 热修复版本的形式构成,前3 - 5位一般为应用版本号(也可自行设置),最后2 - 3位为补丁版本号。例如:

  • 您首次发布应用正式版,应用版本号为 1.2.3,此时对应的BuildNo为 123000。
  • 当您需要基于1.2.3版本进行一次热修复时,需要为新打包的 Apk 增加热修复版本,此时新包的 BuildNo 可以定义为123001。
  • 如果您再度发布新的热修复,则应当继续增加热修复版本,此时 BuildNo 为 123002。
  • 当您应用发布了新版本,此时应当增加应用的版本号并重置热修复版本号。如新版本为1.2.4,则 BuildNo 为 124000。

另外需要注意的是:

  • 通常 BuildNo 会作为 TinkerId 的一部分使用。为保证热修复生效,您应当在打包脚本中定义 BuildNo,并在每次发版时修改 BuildNo。
  • BuildNo 的值必须单向递增,即使您回滚代码也应当定义更高的 BuildNo 而非减小 BuildNo。
  • 控制台填写 BuildNo 时应当与 Apk 真实的 BuildNo保持一致。

TinkerId是什么

TinkerId 是 Apk 的唯一标识,用于标定热修复的基准包以及构建热修复的补丁包,TinkerId 通常由 VerName.BuildNo 的格式构成。如您的应用版本号为 1.2.3,BuildNo 为 123000,则 TinkerId 为 1.2.3.123000。当您在控制台使用 TinkerId 时,应当与您 Apk 打包时真实的 TinkerId 保持一致。

母包 子包 补丁包是什么

  • 母包: 需要被修复的应用包,即用户已安装的 apk。

  • 子包: 针对母包 bug 已修复的应用包。

  • 补丁: 母包与子包 diff 差分所生成的补丁文件。

APK 上传后无法在后台生成补丁文件 日志提示 com.tencent.tinker.android.dex.DexException: Unexpected magic

当您上传 APK 制作补丁文件时,请确保您的 APK 并非通过 Android Studio 的 Run 命令生成,而是通过 assembleDebug 或是 assembleRelease 的方式构建。同时热修复功能仅支持 minSdkVersion 低于24的应用,minSdkVersion 大于等于 24 将无法生成补丁。

热修复相关错误码

概述

热修复主要涉及四个阶段:补丁生成阶段、补丁下载阶段、补丁合并阶段、补丁加载阶段,其中补丁生成在 TMF 服务端,其余阶段则在客户端。

补丁下载阶段-SDK 业务层

以下错误码为 HotpatchListener.onDownloadCallback(HotPatchInfo hotPatchInfo, int errCode) 接口返回

错误码 说明
0 成功
-7 补丁文件下载不完整
-5056 补丁文件下载过程中 IO 异常
-5000 补丁文件下载过程中的异常
-9 补丁文件 MD5 校验失败
-7001 补丁临时文件不存在
-7056 补丁文件 IO 操作异常
-7000 补丁文件操作异常
-1053 补丁文件下载 URL 异常
-10 未知异常
-7006 补丁文件大小校验失败

补丁合并阶段-SDK 业务层与 Tinker 层

以下错误码为 HotpatchListener.onMergeCallback(HotPatchInfo hotPatchInfo, int errCode) 接口返回

错误码 说明
21 不支持 Manifest 文件修改
22 不支持 Anim 修改
0 patchCheck 通过
-1 当前 tinkerFlag 为不可用状态
-2 输入的临时补丁包文件不存在
-3 当前:patch 补丁合成进程正在运行
-4 不能在:patch 补丁合成进程,发起补丁的合成请求
-5 补丁不支持 N 之前的 JIT 模式
-6 补丁已经应用
-7 补丁超过重试次数
-21 ROM 空间不足
-22 内存 heap 不足
-23 Crash 次数超出限制
-24 未知异常
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""