【问题标题】:Why does In-App update fail with resultCode 0?为什么应用内更新失败并显示 resultCode 0?
【发布时间】:2019-10-14 15:23:00
【问题描述】:

在测试In-App Updates 时,更新下载但无法安装,onActivityResult 中的 resultCode 为 0 (RESULT_CANCELED)。

另外,更新版本不是更新到轨道的最新版本(使用内部轨道)。我在内部轨道上发布了这些版本: 1 2 3

使用 versionCode 1 进行构建时,它会尝试更新到 2,但失败了。 当使用 versionCode 2 进行构建时,它说应用程序是最新的。

我尝试上传新版本,但出现同样的错误。我等了 2 天,再次测试,结果相同。

应用与应用捆绑一起发布。

当我安装 playstore 第 3 版(内部轨道)然后发布第 4 版时,App 也被报告为最新。Playstore 显示更新按钮,但应用内更新未报告可用更新。

【问题讨论】:

  • 抱歉,我只有onActivityResultRESULT_OKRESULT_CANCELED。我的应用程序不使用应用程序包。当我测试时,我将我在 Android Studio 中的 versionCode 更改为比 Play 商店中可用的版本更早的版本,然后我启动应用程序并看到有可用更新。我还可以使用应用内更新从我的私人 Alpha 轨道安装。
  • resultCode of 1 是第一个用户定义的活动结果,所以,不确定它来自哪里。我为 RESULT_OK、RESULT_CANCELED 和 ELSE 设置陷阱。如果可以,我会发出 .completeUpdate 并在所有情况下以 .unregisterListener 结束。在 onResume 方法中,我发出了一个 .checkForStalledUpdate ,我在其中添加了一个 appUpdateInfoTask.addOnFailureListener 来侦听停滞更新的 onFailure 异常。我添加了一个 appUpdateInfoTask.addOnSuccessListener,您可以在其中检查是否有可用的更新以及是否允许更新。检查所有可能的结果。
  • @MichaelDougan 它是 resultCode 0。我已经用正确的代码更新了问题。
  • 很遗憾没有解决这个问题。我们最终通过自定义更新对话框来处理此问题,当此错误发生时,该对话框将用户发送到 Playstore。

标签: android in-app-update


【解决方案1】:

我使用内部测试轨道测试了我的自动更新,我所做的是在我正在测试的 AVD 模拟器上打开 Google Play 应用商店,打开我的应用页面。我通过模拟器上的 Google Play 应用程序从内部测试轨道下载了第一个测试版本到模拟器上,以第一次设置测试。然后,每当我将另一个版本上传到内部测试轨道时,我都会在模拟器上刷新 Google Play 应用程序中的应用程序页面,直到我看到新的版本号可用 - 这是我上传后不久,然后,我运行我的测试。因此,它不应该需要几天。如果您这样做了,设备上的 App Store 应该会识别您是否正在从内部测试轨道运行构建,并且它应该几乎立即在 AVD 上的 App Store 应用上显示新的内部测试轨道构建。

不过,App Store 很容易混淆,如果您在测试设备上来回使用不同版本,它可能会检查您发布的应用版本,而不是内部测试轨道版本。

我还发现 FLEXIBLE 更新比 IMMEDIATE 更新更容易出现故障,因此在生产中坚持使用该更新。

【讨论】:

  • 这些步骤是我一直在做的。我在 Playstore 中看到了更新,但应用内更新显示应用是最新的。当我从应用商店(内部轨道)安装并且仍在内部轨道中时,会发生这种情况。不在这里进行轨道跳跃。它似乎正在检查 versionCode 是否小于我发布的旧更新。如果我使用低于该特定版本的 versionCode 进行构建,它将尝试更新,但失败。
  • 我不认为您可以使用较低版本的代码进行构建进行测试。构建有一些东西,可能是因为它是用不同的密钥库签名的,这使它感到困惑。我总是将安装在 AVD 或测试设备上的版本保留在该设备上通过 Google Play App Store 下载的最后一个版本,然后,我上传了具有递增版本号的新版本,然后运行旧版本是通过 Google Play 下载的,而不是要测试的数量较少的新版本。在完成之前,我做了足够多的测试以达到 90 的内部版本号!
  • 我读过其他人使用较低版本代码进行构建并通过 adb 安装进行测试的帖子。我同意签名可能是应用程序签名 b/c 的问题我没有签名密钥。这是它触发更新的唯一一次——尽管它是针对错误的版本并且失败了。从应用商店安装并发布新版本根本不会触发更新,所以我很茫然。
  • 我不得不将日志消息放在任何地方,因为您无法按照自己的意愿设置断点和单步执行代码。我记录了我输入的每个方法,因此我可以看到我何时点击了 onSuccess 和 onFail 侦听器,并记录了返回的每个结果代码,以查看更新是否可用,或可用但不允许。查看状态何时更改,并查看调用时的安装状态。我遇到了相当多的“停滞”更新案例。当我得到一个时,我必须从设备上删除应用程序并重新下载,然后上传另一个新版本以继续测试。
  • 我也到处举杯。它成功检查更新并说没有可用的更新 - 除非我安装带有 adb 和低 versionCode 的版本。 Playstore 看到更新并显示“更新”按钮。尝试了多个设备,结果相同。
猜你喜欢
  • 2012-05-21
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 2020-01-24
  • 2021-05-08
  • 1970-01-01
  • 2011-03-09
相关资源
最近更新 更多