为什么Android更新应用程序内总是返回UPDATE_NOT_AVAILABLE并且版本代码为0?

时间:2019-12-05 16:20:47

标签: android updates

我正在使用these instructions通过Android Studio测试应用内更新。

为了进行测试,我删除了我的App,并在gradle中设置了次要版本代码,然后从调试中将此版本的App安装到了我的设备中。

上面的代码总是返回UPDATE_NOT_AVAILABLE

代码:

  private void checkForUpdates() {
        // Creates instance of the manager.
        AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(MainActivity.this);

        // Returns an intent object that you use to check for an update.
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

        // Checks that the platform will allow the specified type of update.
        Log.d(TAG, "upd_1:" + appUpdateManager.getAppUpdateInfo());

        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            Log.d(TAG, "upd_2:" + appUpdateInfo.updateAvailability());
            Log.d(TAG, "upd_3:" + appUpdateInfo.availableVersionCode());

            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    // For a flexible update, use AppUpdateType.FLEXIBLE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                // Request the update.
                try {
                    appUpdateManager.startUpdateFlowForResult(
                            // Pass the intent that is returned by 'getAppUpdateInfo()'.
                            appUpdateInfo,
                            // Or 'AppUpdateType.FLEXIBLE' for flexible updates.
                            AppUpdateType.IMMEDIATE,
                            // The current activity making the update request.
                            this,
                            // Include a request code to later monitor this update request.
                            MY_REQUEST_CODE);
                } catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }
            }
        });

    }

这是我的日志:

这是updateAvailability()的日志:

2019-12-05 17:00:39.436 3381-3381/org.my.app D/MainActivity: upd_2:1

这是availableVersionCode()的日志:

2019-12-05 17:00:39.436 3381-3381/org.my.app D/MainActivity: upd_3:0

我怎样才能测试更新应用内previos以上传此应用的新版本?

2 个答案:

答案 0 :(得分:1)

这里的聚会有点晚了,但希望这可以在未来帮助其他人:

您收到不好回应的原因是您尝试提供更新的新 APK 和您当前安装的 APK 都必须由您的生产密钥签名,也就是发布版本。使用调试版本会导致每次调用都失败。

为了正确测试这一点,我建议将发布版 APK 上传到 Google Developer Console 上的内部测试轨道。像这样:

  • 将版本 x.x.1 上传到内部测试轨道,然后使用链接下载到您的设备
  • 将碰撞版本 x.x.2 上传到内部测试轨道
  • 在 Play 商店中导航到您的应用(应显示可用更新)
  • 进入您的应用并测试您期望的用户流程

此处有更多详细信息:In-App Update API showing UPDATE_NOT_AVAILABLE while testing on debugging device

答案 1 :(得分:0)

至少您应该从Play商店下载该应用。这是因为设备必须知道有关应用程序的确切信息。加载其他降级的应用程序后,您的代码即可使用。