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

yoo*_*hok 12 android google-play in-app-update google-play-core

最近,谷歌在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()}")
    }
}
Run Code Online (Sandbox Code Playgroud)

result.updateAvailability()总是如此UpdateAvailability.UPDATE_NOT_AVAILABLE

为此,我制作了一个带有先前版本代码的签名发行版APK。但这是行不通的。

根据开发人员主题演讲中的演示(16:40〜)

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

我该怎么做?

rpa*_*abi 63

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

测试应用内更新的正确方法是使用内部应用共享(不要与内部测试轨道混淆)。

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

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

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

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

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

一旦通过内部应用程序共享测试成功,我仍然发现通过已发布版本测试应用程序内更新有些麻烦。经过一些试验,我能够成功地通过 Alpha 轨道进行测试。我在这里添加步骤(我假设您熟悉 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 有其自身令人困惑的方式。祝你好运。


Dr.*_*dRO 7

或者,您可以使用此类作为 UNIT 测试来模拟应用内更新

假应用更新管理器

这有一些预定义的方法。

  • FaceAppUpdateManger 仅用于单元测试,只需转到正确的 if 条件,不会启动任何更新流程或其他任何内容。 (2认同)

Abh*_*mar 7

这为时已晚,但它可能会帮助其他开发人员。

截至今天,无法对调试版本进行应用内更新测试。您也不需要将您的 apk 放到 PlayStore 进行测试。最好的测试方法in-app-update是使用internal-app-sharing.

如果您一一按照以下步骤进行操作,您将能够成功测试。

  1. 要测试应用程序,测试人员必须首先在 PlayStore 中启用内部应用程序共享,请按照此链接进行相同操作,如何为 Android 启用内部应用程序共享?
  2. 如果您有足够的勇气了解官方文档,那么只需点击此链接即可in-app-update在您的设备中进行设置测试,https://developer.android.com/guide/playcore/in-app-updates#internal-app-分享

在这里,我将用简单的语言写出相同的内容。

一旦你与建立完成internal-app-sharingPlay-Store,请确保您有2周的APK上传到内部应用程序共享的Play-Console,因此产生2个链接。两个 apk 都将使用相同的签名signing-key(不必与您用于签名生产的相同,任何虚拟签名密钥都可以使用)。

  1. 首先,您将具有较低版本代码(例如 100)的应用内更新实现的 apk 上传到播放控制台上的内部应用共享。

要知道,如何将 apk 上传到 Play-Console 上的内部应用共享,请按照此 lisk,https://support.google.com/googleplay/android-developer/answer/9844679? visit_id = 637437125318137239-1277036129 &rd=1

注意:确保您已卸载设备中具有相同软件包名称的所有预装应用程序。

  1. 现在,您将上传的应用程序链接复制到 Play 控制台上的内部应用程序共享,并使用此链接在您的设备上安装该应用程序。

注意:安装前,请确保您在 play-store 上使用的电子邮件 ID 已添加到 play-console 上 internal-app-sharing 的邮件列表中。

  1. 现在,一旦您使用链接安装了应用程序。现在,您需要再次创建一个具有更高版本代码(例如 101)的新签名 apk。并将这个apk上传到internal-app-sharing。

  2. 现在,从 internal-app-sharing 复制具有更高版本代码的链接。单击您设备上的此链接,它将带您进入游戏商店,但这次update将启用install按钮而不是按钮,因为您的设备中已经安装了具有较低版本代码的应用程序。

  3. 您不必单击 PlayStore 上的更新按钮。您只需单击该链接,即可在 PlayStore 上打开屏幕。现在关闭 PlayStore 应用程序。

  4. 现在,您可以从您的设备启动已安装的应用程序。

如果您的 in-app-update 实现没有问题,启动该应用程序将出现 PlayStore 中的更新对话框。

最后,如果它对您有任何帮助,请不要忘记点赞。继续编码!


fva*_*via 5

就我而言,我已经完成了以下步骤:

  1. 从设备上卸载原始应用。
  2. 从Google Play商店安装应用程序(我已经在商店中拥有我的应用程序,但是如果您没有该应用程序,则可以创建Alpha或Beta版本,而无需在商店中发布)。
  3. 再次取消安装该应用。
  4. 使用新功能生成签名的APK,版本代码低于Google Play版本
  5. 安装此apk。

启动时,它将在Google Play商店中检查新版本,并显示助手以对其进行更新。如果此解决方案只能在某台设备上使用,而不能在另一台设备上使用,请尝试使用相同的Google帐户登录,然后在该设备上再次尝试5个步骤。然后,您可以再次使用原始帐户。出于某种疯狂的原因,Google Play似乎“激活”了版本控件,并返回在其他设备中再次提供版本。

我不知道该如何做...


Tus*_*iya 5

看一下FakeAppUpdateManager 的文档

或尝试以下预定义的方法将帮助您测试应用程序更新是否可用。

FakeAppUpdateManager fakeAppUpdateManager = new FakeAppUpdateManager(this);
        fakeAppUpdateManager.setUpdateAvailable(1); // add app version code greater than current version.
        fakeAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
            @Override
            public void onSuccess(AppUpdateInfo appUpdateInfo) {
                if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                        && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                    System.out.println("checkForAppUpdateAvailability");
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)


yoo*_*hok 4

嗯...我找到了解决方案。它与 Google I/O 2019 - 开发者主题演讲上的演示不一样。

我将签名的发布 apk 发布到内部开发人员版本中。而且效果很好。

或者您可以将其发布在“Alpha/Beta 封闭测试发布”上。

  • 我已上传到内部应用程序共享,但 appUpdateInfo.updateAvailability() 始终返回 1,即 UPDATE_NOT_AVAILABLE。 (4认同)
  • 这很奇怪...现在我向公众发布了但是...它仍然是“UPDATE_NOT_AVAILABLE”。和我一样... (3认同)
  • 尝试使用版本增量进行测试版上传,它将起作用。还要确保您使用与产品发布相同的密钥库文件。这需要一些时间,但会起作用。 (2认同)