【问题标题】:Play Core in app update giving UPDATE_NOT_AVAILABLE on production release在应用更新中播放核心,在生产版本中提供 UPDATE_NOT_AVAILABLE
【发布时间】:2022-04-26 09:11:26
【问题描述】:

我已经集成了 play 核心应用内更新,它在测试轨道中运行良好,但是当在生产轨道中发布版本时,它总是给出 UPDATE_NOT_AVAILABLE 标志。我认为问题可能是因为启用了定时发布/发布概述。我必须从游戏控制台本身更改任何修复或任何设置吗?还是我必须在我的 android 端实现一些东西? 这是实现的代码-

AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);
    Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
    appUpdateInfoTask.addOnCompleteListener(listener -> {
        if (listener.isSuccessful()) {
            Log.d(TAG, "Update Available " + (listener.getResult().updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE)); // returns false
            Log.d(TAG, "Update Allowed" + listener.getResult().isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)); // returns false
            Log.d(TAG, "Update Availibility" + listener.getResult().updateAvailability()); // returns 1 that is UPDATE_NOT_AVAILABLE

            if (listener.getResult().updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && listener.getResult().isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                try {
                    appUpdateManager.startUpdateFlowForResult(
                            listener.getResult(),
                            AppUpdateType.IMMEDIATE,
                            activity,
                            1001);
                } catch (IntentSender.SendIntentException e) {
                    Log.e(TAG, "showPopup: ", e);

                    dialog.show();
                }
            } else {
                Log.d(TAG, "no update: " + listener.getResult());

                dialog.show();
            }
        } else {
            Log.e(TAG, "no update: ", listener.getException());
        }
    });

【问题讨论】:

    标签: java android google-play-console in-app-update google-play-core


    【解决方案1】:

    我昨天遇到了类似的问题,在我绝望的情况下,我应该对有类似问题的评论作为答案......@Natty 向我展示了我的方式错误,我感觉很糟糕,所以做了我肯定会带着更好的实际答案回来:

    我发现可能的罪魁祸首是google play app signing。看起来他们在 2021 年 8 月进行了更改,因此默认设置是允许 google 管理应用签名,这意味着您的应用在每个版本中都由不同的密钥签名,因此您的版本具有不同的签名,并且不会找到更新。内部应用共享除外。

    遗憾的是,似乎没有办法选择退出

    您无法在激活后禁用应用签名,如下图所示:

    see this post

    情况变得更糟......因为你知道谷歌......你也不能删除你的应用程序,你唯一能做的就是

    1. 取消发布应用程序。
    2. 然后在 google play store 上创建一个新版本。将 applicationId 更改为一些细微的变体,以便将其视为不同的应用。
    3. 在任何轨道中添加新应用的第一个版本时,请确保在您放入应用程序包的位置上方选择适当的应用签名选项
    4. 点击使用不同的键
    5. 要么使用从 android studio 生成的密钥库,要么创建一个新的。从那时起,谷歌将使用同一个密钥库来签署应用程序的所有未来版本。

    我什至回去仔细检查了我的情况,检查了旧版本的应用程序和内部测试轨道上的新版本。事实上,使用相同应用签名密钥库的新版本适用于应用内更新,但使用 google 应用签名的旧版本则不能。

    请记住,一个全新的应用必须经过审核流程,新应用可能需要 1-3 天(完成初步审核后似乎要快得多)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2019-10-24
      • 2017-10-07
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多