如何在 Android 中测试应用内更新?

新手上路,请多包涵

最近,谷歌在 Google I/O 2019 中引入了“应用内更新”。

所以我正在尝试使用它。

 val appUpdateManager = AppUpdateManagerFactory.create(this)
val appUpdateInfo = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnCompleteListener {
    val result = it.result
    if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
            && result.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {

        info("should show update")
        appUpdateManager.startUpdateFlowForResult(
                        result,
                        AppUpdateType.FLEXIBLE,
                        this,
                        1)
    } else {
        info("This is already latest version: ${result.updateAvailability()}")
    }
}

但是 result.updateAvailability() 总是 UpdateAvailability.UPDATE_NOT_AVAILABLE

为此,我使用以前的版本代码制作了一个已签名的发布 apk。但它不起作用。

根据 Developer Keynote 上的演示 (16:40 ~ )

他正在用模拟器来做。它看起来像调试模式。

我怎样才能做同样的事情?

原文由 yoonhok 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
1 个回答

使用内部应用共享进行测试

测试应用内更新的正确方法是使用 Internal App Sharing(不要与 Internal Testing Track 混淆)。

  1. 首先在 这些说明 的帮助下设置您的 内部应用程序共享。与 Internal Testing Track 不同,Internal App Sharing 使应用程序立即可用。所以没有等待时间。
  2. 选择加入 Google Play 应用签名。这将允许 google play 对从您提供的应用程序包中为设备生成的 apk 进行签名。详情 在这里
  3. 构建您的应用程序包。通过命令行,它只是 ./gradlew bundleRelease./gradlew bundle<variant>
  4. 转到 https://play.google.com/apps/publish/internalappsharing/ 并上传生成的 aab 文件,该文件位于 app/build/outputs/bundle/<variant>/ 下。给一个包含版本代码的体面的名字。
  5. 这将提供一个复制链接。使用它将此捆绑包安装到您的设备。
  6. 在您的应用程序中修改版本代码 build.gradle 并构建另一个包。注意:版本号是整数,就是要递增的。版本名称不同,对此无关紧要。
  7. 同样将这个新包上传到 Internal App Sharing。用版本代码命名。
  8. 这将提供另一个链接。打开链接,这将打开 google play,您应该会看到“更新”选项。 不要点击更新!
  9. 打开您的应用,现在您应该会看到应用内更新提示。

如果您没有看到提示 ,并且 您完全按照这些步骤操作,很可能是您的代码有问题。添加一些日志记录以查看您的代码中发生了什么。

在我们的测试中,以下内容无助于测试应用内更新(在其他地方建议):

  • 在不增加版本代码的情况下重新上传相同的 bundle/apk
  • 将版本代码降低到低于发布版本

使用 Alpha 进行测试(封闭轨道)

通过内部应用共享测试成功后,我仍然发现通过已发布版本测试应用内更新存在一些问题。经过一些尝试,我能够成功通过Alpha track进行测试。我在此处添加步骤(我假设您熟悉 Google Play 控制台的 Alpha 封闭轨道并将您自己添加为 Alpha 测试人员列表):

  1. 通过 Google Play 安装当前版本的应用程序。这可以来自生产轨道或 alpha 或 beta 轨道。此版本应该已经实现了应用内更新功能,因为这是预计会显示应用内更新提示的版本。
  2. 确保仅为您的应用 禁用 自动更新。您可以通过 Google Play 应用中应用商品详情的菜单项执行此操作。我们禁用自动更新,因为我们真的希望通过应用内更新来更新应用,而不是在您的设备充电时通过 Google Play 更新应用。
  3. 将新版本( 版本代码 递增,更改 版本名称 无关紧要)发布到 Alpha 轨道。
  4. 如今,发布的版本需要一段时间才能出现在 Google Play 中。您可能需要等待几个小时。
  5. 一旦它出现在 Google Play 商店中,您可能会迫不及待地尝试打开您的应用程序。如果出现应用内更新提示,您将很幸运。很可能不会。即使您继续等待几个小时并不断重启您的应用程序,应用程序内更新也可能不会显示。通过执行其余步骤,我不必等待。
  6. 完全关闭您的应用程序。
  7. 完全关闭 Google Play 应用。
  8. 清除 Google Play 应用缓存。我发现不需要清除存储,只需清除缓存即可。
  9. 打开 Google Play 并从导航窗格转到 我的应用程序和游戏
  10. 现在 Google Play 将搜索更新。您的应用更新应该会出现。当然,不要在这里更新。
  11. 打开你的应用程序。应出现应用内更新提示。如果没有,请使用内部应用共享(上一节中的步骤)测试您的应用内更新,并确保您的实施没有问题。

我想类似的过程也适用于 Beta(开放轨道)和生产轨道。

即使在通过 Google Play 提供更新后,要让最终用户看到应用内更新,我认为可能需要相当长的时间(几天!)。 Google Play 有自己令人困惑的方式。祝你好运。

原文由 rpattabi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题