套餐 A(旧版/基础版)
单击或放下第一个 .apk / .xapk 文件
套餐B(新/更新版本)
单击或放下第二个 .apk / .xapk 文件
为什么比较 APK 版本可以防止更新失败
当您在现有安装上安装较新版本的 Android 应用程序时,Android 的 PackageManager 会强制执行两个严格的规则:新包的 versionCode 必须大于或等于已安装的版本,并且 META-INF/(或 APK 签名块 v2/v3)内的签名证书必须逐字节相同。
- 签名证书摘要匹配: 计算两个包中 .RSA / .DSA / .EC 签名块的 SHA-256 指纹,以便您立即知道就地更新是否会成功而无需卸载。
- 原生 ABI 和 DEX 差异: 突出显示更新是否删除了 32 位 armeabi-v7a 库或添加了新的 classes*.dex 文件。
- CRC32 条目增量: 列出在构建之间添加或删除的确切文件。
Android 如何评估软件包更新(INSTALL_FAILED_UPDATE_INCOMPATIBLE)
用户在更新旁加载应用程序时遇到的最常见错误之一是 “应用程序未安装,因为包与现有包冲突”(在 ADB 日志中称为 INSTALL_FAILED_UPDATE_INCOMPATIBLE)。每当安装的应用程序来自 Google Play 商店(使用开发人员的私有发布密钥签名)并且更新是从拆分 .xapk 存档转换而来(合并拆分后必须使用转换器签名密钥重新签名)时,就会发生这种情况。
但是,如果您的旧版本和新版本都是使用 xapktoapk.com 进行转换的,我们的确定性签名管道在各个转换中使用相同的一致签名证书,这意味着您可以将新的转换后的 APK 直接安装在旧的转换后的 APK 之上,而无需卸载或丢失您的应用内进度!在安装之前,使用上面的比较工具确认两个文件共享相同的证书摘要。