14

我正在尝试集成新的应用内更新 API,但我无法测试它的实现。似乎我的代码很好,因此我阅读了疑难解答并且无法理解本文档中的 2 点

确保您正在测试的应用使用与 Google Play 提供的相同的签名密钥进行签名。

  1. 在已连接设备上安装 Apk 时,如何在调试模式下使用相同的签名密钥进行签名?

如果您正在测试的应用程序没有出现可用更新,请检查您是否已正确设置测试轨道。

  1. 是否必须在内部测试轨道发布 App 以测试实施?

无论如何,我只想在我的设备上进行测试,并且我从 Play 商店版本中减少了版本代码,但它总是显示UPDATE_NOT_AVAILABLE

这是代码: -

val appUpdateInfo: Task<AppUpdateInfo> = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnSuccessListener {
    if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
        appUpdateManager.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, this, 2);
    }else{
        toast("Not Available")
    }
}
4

12 回答 12

16

在再次彻底阅读文档之前,我为同样的问题苦苦挣扎了几天。请阅读有关应用内更新的官方文档的这一部分

该链接描述了正确的测试程序,如下所示:

  1. 在您的测试设备上,确保您已安装满足以下要求的应用版本:
  • 该应用是使用内部应用共享 URL 安装的
  • 支持应用内更新
  • 使用的版本代码低于您应用的更新版本
  1. 按照 Play 管理中心关于如何在内部共享您的应用的说明进行操作。确保您上传的应用版本使用的版本代码高于您已在测试设备上安装的版本代码。
  2. 在测试设备上,只需单击应用程序更新版本的内部应用程序共享链接。请勿从单击链接后看到的 Google Play 商店页面安装该应用程序。
  3. 从设备的应用程序抽屉或主屏幕打开应用程序。该更新现在应该可供您的应用使用,您可以测试应用内更新的实现。

这也非常有用,因为您不必等待应用程序发布,您可以立即开始测试。

于 2019-12-23T13:56:21.817 回答
10

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

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

  1. 要测试应用程序,测试人员必须首先在 PlayStore 中启用 Internal-App-Sharing,点击此链接相同,如何为 Android 启用内部应用程序共享?
  2. 如果你有足够的勇气看懂官方文档,那么只需点击这个链接in-app-update在你的设备中设置测试,https://developer.android.com/guide/playcore/in-app-updates#internal-app-分享

在这里,我将用简单的文字写下相同的内容。

完成设置后internal-app-sharingPlay-Store请确保您必须将 2 个 apk 上传到 internal-app-sharing on Play-Console,从而生成 2 个链接。两个 apk 将使用相同的签名signing-key(不必与您用于为生产签名的那个相同,任何虚拟签名密钥都可以使用)。

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

要了解如何在 Play-Console 上将 apk 上传到 internal-app-sharing,请遵循此 lisk,https://support.google.com/googleplay/android-developer/answer/9844679? visit_id=637437125318137239-1277036129&rd=1

注意:确保您已卸载设备中具有相同包名的任何预安装应用程序。

  1. 现在,您将上传的应用程序的链接复制到播放控制台上的 internal-app-sharing 并使用此链接在您的设备上安装该应用程序。

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

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

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

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

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

如果您的应用内更新实现很好,启动应用程序将出现来自 PlayStore 的更新对话框。

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

于 2020-12-16T10:52:15.147 回答
7

我有 UPDATE_NOT_AVAILABLE 的类似问题。经过数小时的研究,这是我解决的方法:

  1. 使用 Google Play 商店安装测试应用程序的版本(我使用内部测试轨道推出)

  2. 在 Play Console 上推出另一个版本代码更高的版本(相同的内部测试轨道)

  3. 关闭测试应用程序和 Google Play 商店(不仅仅是回到家,使用最近的密钥并刷掉它们)

  4. 打开 Google Play 商店并确保测试应用有可用的更新(您可以在“我的应用和游戏”> 已安装下查看)

  5. 现在打开测试应用程序并检查 UPDATE_AVAILABLE

这在推出后几乎立即对我有用

于 2019-09-07T17:28:57.490 回答
6

手动测试的基本要求

为了在测试设备上手动执行完整的更新流程,您应该至少有两个版本号不同的应用程序版本:源版本和目标版本。

  • 具有较高版本号的源版本应在 Google Play 上发布,这是 Google Play 将识别为可用更新的版本。应在您的设备上安装具有较低版本号和集成 IAU(应用内更新)功能的目标版本,这是将要更新的版本。问题是,当应用程序请求 Google Play 检查可用更新时,它会将已安装应用程序的版本号与最后一个可用的内置 Google Play 的版本号进行比较。因此,只有在 Google Play 中的版本号高于设备上应用程序的实际版本时才会触发 IAU 功能。
  • 源版本和目标版本都需要具有相同的包名,并且应该使用相同的发布证书进行签名。
  • Android 5.0(API 级别 21)或更高版本。
  • 播放核心库 1.5.0 或更高版本。

更新不可用错误

首先,请仔细检查上述要求。如果您按照所有要求成功完成上述步骤但仍然收到错误,请注意以下技巧。最可能的原因是由于内部缓存机制,Google Play 应用程序还不知道更新。为确保在手动测试时缓存是最新的,您可以通过转到 Google Play 应用程序中的“我的应用程序和游戏”屏幕来刷新缓存版本。其他替代方法,您可以在设置中简单地清除 Google Play 应用程序的缓存。请注意,这只是一个测试问题,不会影响最终用户,因为缓存每天都会更新。

注意- 对于 IAU,App Bundle 不是强制性的。

于 2019-09-09T20:21:28.050 回答
4

我从 Google Play 安装了我的应用程序。然后我删除了它并用较低的 versionCode 安装了签名的 apk。

“应用内更新仅适用于拥有该应用的用户帐户。因此,在使用该帐户测试应用内更新之前,请确保您使用的帐户已从 Google Play 下载您的应用至少一次。” developer.android.com/guide/app-bundle/in-app-updates

于 2019-07-12T14:27:51.733 回答
2

正如 Arpit J. 建议的测试应用程序的基本主要要求,如果您仍然无法成功测试应用程序,我想再添加一个最后一步,以帮助您快速测试应用程序。

如图所示,从设置中转到播放商店应用程序信息,并清除数据,如随附的屏幕截图所示。播放商店应用信息的步骤可能因设备而异。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2019-09-25T06:20:26.523 回答
2

首先,您必须将您的应用发布到 Google Play。确保:

  1. 您发布的版本代码高于您将用于测试更新的版本代码,因为如果不是,则它不会将其识别为更新。然后让 Google Play 刷新它的缓存很长一段时间(在我的情况下,我已经等了 12 个小时才能够使其第一次工作)。
  2. 您已经使用相同的签名签署了两个 apk。

如果你想要一个可以运行的演示应用程序,我已经上传了一个git 存储库,它的版本代码比我在 Google Play 中发布的版本代码低。

工作应用内更新 UI

于 2019-05-27T02:44:27.373 回答
2

还有为此目的而创建的FakeAppUpdateManager 。你可以使用它。

于 2019-05-14T09:02:34.753 回答
1

最后通过从 Play 商店-> 我的应用和游戏-> 库中删除应用程序解决了这个问题。

  • 您必须使用与以前版本相同的密钥库安装发布应用程序。

当您之前在您的设备或在 Play 商店中共享相同 gmail 地址的任何设备上安装了具有更高版本代码的相同应用程序时,就会发生这种情况。希望这可以帮助。

于 2020-03-12T10:33:32.097 回答
0

对于第一个问题,他们说您需要使用您的发布密钥库对应用程序进行发布构建。然后,您可以将生成的 .apk 文件附加到电子邮件中并通过电子邮件发送给您自己。然后,在您的 android 设备上查看您的电子邮件并将 .apk 附件下载到您的下载中,在下载结束时,Android 应该询问您是否要安装 .apk,说是(如果它没有询问,然后单击下载文件夹中的文件,然后它应该会询问)。

对于第二个问题,我可以想象通过内部测试轨道对此进行测试的唯一方法,因为您必须与 Google Play 店面进行交互,但不会影响您的实时发布版本。

于 2019-05-13T22:26:00.543 回答
0

当内部应用共享不起作用时

内部应用程序共享无法在真实设备上运行。我测试了几个小时,总是得到最新版本的内部测试,而不是我所期望的内部应用共享。

解决方案是使用带有 Play Store 的模拟器。

我一步一步描述:

  1. 使用大于或等于 API 级别 21 5.0的 Google Play 创建虚拟设备。
  2. 打开模拟器并使用内部测试人员列表中的 google 帐户登录。
  3. 构建具有不同版本的 2 个 APK。每个具有相同的versionCode 和 versionName 临时去执行安装时检查。例如:

APK 1: versionCode and versionName: 100

APK 2: versionCode and versionName: 101

  1. 使用 versionCode 和 versionName 100将 APK 1 上传到internalappsharing

  2. 将 APK 1 的共享链接复制并粘贴到Keep Notes网络应用中。

  3. 使用模拟器 Keep Notes 应用程序中的链接安装版本代码为 100 的 APK 1。
  4. 最重要的是:检查已安装的应用程序的版本名称是否为 100。
  5. 如果我们此时打开 APK 1,则在我们上传更大版本的 APK 2 之前,没有可用的更新。
  6. 将带有代码 101 的 APK 2 上传到internalappsharing
  7. 将 APK 2 链接复制并粘贴到 Keep Notes 网络应用中。
  8. 不要从链接安装 APK 2。只需输入 APK 2 链接即可检查 Play 商店是否描述了更新的存在。
  9. 使用 APK 1 打开安装在模拟器上的应用并在应用内安装更新。

最后,每次他们输入一个版本代码大于上次从模拟器安装的链接时,他们都会看到存在一个新更新,该更新应该安装在应用程序中,而不是从 Play 商店安装。

在此处输入图像描述


值得一提的是,Logcat兼容 Internal App Sharing。

总帐

资源

于 2020-06-19T20:03:59.763 回答
0

发布后您需要等待,需要 2 到 6 个小时。

于 2019-08-03T00:00:40.313 回答