Google 播放 - 无法安装。再试一次,如果仍然不起作用,请参阅解决问题的常用方法

Google Play - Can't install. Try again, and if it still doesn't work, see common ways to fix the problem

大量用户抱怨他们在尝试安装我的应用程序的最新更新时收到以下错误(见下图)。我一直无法自己复制这个问题。已记录 Google 问题,但他们似乎也不知道是什么原因造成的(要求开发人员报告错误,但让用户了解如何执行此操作让我感到不自在)。我看过其他一些关于这个主题的帖子,但没有解决方案。关于可能的原因有什么想法吗?

我考虑过的事情:

我确实做了两项更改,但我认为这不是问题:

错误示例如下:

并显示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:sharedUserId="XXX..shared"
package="XXX">

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />
<uses-feature
    android:name="android.hardware.sensor.compass"
    android:required="true" />
<!--<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />-->
<uses-feature
    android:glEsVersion="0x00030002"
    android:required="true" />


<queries>
    <!-- Explicit apps you know in advance about: -->
    <package android:name="XXX"/>
    <package android:name="XXX2"/>
    <package android:name="XXX3"/>
</queries>


<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="28"
    tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:name="XXX"
    android:allowBackup="true"
    android:fullBackupContent="true"
    android:icon="@mipmap/ic_launcher"
    android:label="XXX"
    android:usesCleartextTraffic="false"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config">

    <provider
        android:authorities="XXX"
        android:name="XXX.SharedPreferencesContentProvider"
        android:exported="true"
        android:protectionLevel="signature">
    </provider>

    <activity
        android:name=".MainActivity"
        android:label="XXX"
        android:screenOrientation="fullSensor"
        android:theme="@style/SplashTheme"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    ...

</application>

</manifest>

编辑: 怀疑我的清单中的以下行可能是罪魁祸首:

android:sharedUserId="XXX..shared"

正在发布新版本,将为您提供更新。

问题出在清单中的以下行:

android:sharedUserId="XXX..shared"

我从上一个版本开始就添加了这个,以试验我的应用程序套件相互通信,但在我发布之前忘记删除它。此 sharedUserId 通常用于对使用相同 cert/developer 签名的应用进行分组,以便它们可以彼此共享信息。但是,该标志现在已被弃用,如果您需要您的应用程序相互通信,有更好的方法可以在不破坏您的应用程序的情况下执行此操作。在此处阅读有关 sharedUserID 的更多信息(但无论您做什么,都不要实现它!):

https://developer.android.com/guide/topics/manifest/manifest-element

如果添加了 sharedUserId 或与当前安装的版本不匹配,用户的应用更新将失败。 Google 播放只会挂起或显示对您的用户无用的一般错误,最终导致混乱和一堆 1 星评价。

警告:删除 sharedUserId 可能与添加它一样有问题。在您添加应用程序后下载该应用程序(或在此期间重新安装您的应用程序)的任何用户现在在尝试更新到您删除它的版本时都会遇到相同的错误。他们修复的唯一方法是再次 uninstall/reinstall 应用程序。 幸运的是,我在几天内找出了这个根本原因,所以我只需要管理几天的新应用程序现在会遇到此问题的用户,但如果这种情况持续下去,您可能会看到大量用户遇到更新问题。