繁体   English   中英

Play Core 在应用程序更新中提供 UPDATE_NOT_AVAILABLE 生产版本

[英]Play Core in app update giving UPDATE_NOT_AVAILABLE on production release

我已经集成了游戏核心应用程序内更新,它在测试轨道中运行良好,但是当在生产轨道中发布版本时,它总是给出 UPDATE_NOT_AVAILABLE 标志。 我认为问题可能是因为启用了 Timed Publishing/Publishing Overview。 我必须从游戏控制台本身更改任何修复程序或任何设置吗? 或者我必须在我的 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());
        }
    });

昨天我遇到了类似的问题,在我绝望的时候,我把应该是关于有类似问题的评论作为答案...... @Natty向我展示了我的方式错误,我感觉很糟糕,所以确保我会返回一个更好的实际答案:

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

可悲的是,似乎没有办法选择退出

您无法在激活后禁用 App Signing,如下图所示:

看到这篇文章

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

  1. 取消发布应用程序。
  2. 然后在 google play 商店上创建一个新版本。 将 applicationId 更改为一些细微的变体,以便将其视为不同的应用程序。
  3. 当您在任何轨道中添加新应用的首次版本时
  4. 单击使用不同的密钥
  5. 使用从 android studio 生成的密钥库或创建一个新密钥库。 从那时起,谷歌将使用相同的密钥库来签署该应用程序的所有未来版本。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM