在什么情况下 "Non-upgradeable to installed app" 消息会在 Google Play Console for Instant Apps 中触发

Under what circumstances does the "Non-upgradeable to installed app" message trigger in the Google Play Console for Instant Apps

我正在尝试将免安装应用上传到 google 播放中的正式版轨道。我在生产中有一个相关的已安装 apk,在预发布轨道中有一个即时应用程序。当我尝试将即时应用程序发布到生产环境时,出现错误:"Non-upgradable to installed app"(与 中描述的错误相同)

我尝试遵循链接线程中的不同建议,但一无所获。当我 运行 aapt dump badging 时,我的目标和最小 sdk(分别为 26 和 19)在即时和可安装之间显示相同,除了版本代码(我给了我的即时应用程序一个版本代码1 而可安装的版本代码为 99),此命令的输出对于每个 apk 都是完全相同的。就链接线程中讨论的权限而言,没有什么让我突然想到的。我使用的唯一权限是 uses-permission: name='android.permission.INTERNET'uses-permission: name='android.permission.ACCESS_NETWORK_STATE'.

使用 Analyze APK 检查清单时,除了版本代码和添加的 targetSandboxVersion=2 之外,这些也相同。这就是即时的样子(我为某些值放置了 example.com 和 "stuff" 的占位符)

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1"
    android:versionName="7.7.7"
    android:targetSandboxVersion="2"
    package="com.android.example_app">

    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="26" />

    <uses-permission
        android:name="android.permission.INTERNET" />

    <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE" />

    <supports-screens
        android:smallScreens="false"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:requiresSmallestWidthDp="200" />

    <application
        android:theme="stuff"
        android:label="stuff"
        android:icon="stuff"
        android:allowBackup="true"
        android:networkSecurityConfig="stuff">

        <activity
            android:label="stuff"
            android:name="com.android.example_app.MainActivity"
            android:launchMode="2"
            android:configChanges="0x4a0"
            android:allowTaskReparenting="false"
            android:windowSoftInputMode="0x22">

            <intent-filter
                android:autoVerify="true">

                <action
                    android:name="android.intent.action.VIEW" />

                <category
                    android:name="android.intent.category.DEFAULT" />

                <category
                    android:name="android.intent.category.BROWSABLE" />

                <data
                    android:scheme="http" />

                <data
                    android:scheme="https" />

                <data
                    android:host="www.example.com" />
            </intent-filter>

            <intent-filter
                android:autoVerify="true">

                <action
                    android:name="android.intent.action.VIEW" />

                <category
                    android:name="android.intent.category.DEFAULT" />

                <category
                    android:name="android.intent.category.BROWSABLE" />

                <data
                    android:scheme="http" />

                <data
                    android:scheme="https" />

                <data
                    android:host="www1.example.com" />
            </intent-filter>

            <meta-data
                android:name="default-url"
                android:value="https://www.example.com" />

            <intent-filter>

                <action
                    android:name="android.intent.action.MAIN" />

                <category
                    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="net.hockeyapp.android.UpdateActivity" />

        <activity
            android:label="WebviewActivity"
            android:name="com.android.example_app.architecture.Pages.CustomChromeTabs.WebviewActivity"
            android:parentActivityName="com.android.example_app.architecture.MainActivity">

            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".architecture.MainActivity" />
        </activity>

        <service
            android:name="org.openudid.OpenUDID_service">

            <intent-filter>

                <action
                    android:name="org.openudid.GETUDID" />
            </intent-filter>
        </service>

        <meta-data
            android:name="aia-compat-api-min-version"
            android:value="1" />
    </application>
</manifest>

我还有什么可以解决此错误的方法,或者我可以从游戏控制台获取更多有关问题的信息的方法吗?错误消息似乎涵盖的不仅仅是它声称的目标 sdk 验证。需要明确的是,即时应用程序在预发行版中运行良好,而安装版在 alpha 中一直运行良好,一直到生产。

感谢您的帮助!

编辑:

免安装应用程序aapt dump badging output

package: name='com.android.example_app' versionCode='1' versionName='7.7.7' platformBuildVersionName=''
sdkVersion:'19'
targetSdkVersion:'26'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
application-label:'example'
application-label-af:'example'
application-label-am:'example'
application-label-ar:'example'
application-label-az-AZ:'example'
application-label-be-BY:'example'
application-label-bg:'example'
application-label-bn-BD:'example'
application-label-bs-BA:'example'
application-label-ca:'example'
application-label-cs:'example'
application-label-da:'example'
application-label-de:'example'
application-label-el:'example'
application-label-en-AU:'example'
application-label-en-GB:'example'
application-label-en-IN:'example'
application-label-es:'example'
application-label-es-US:'example'
application-label-et-EE:'example'
application-label-eu-ES:'example'
application-label-fa:'example'
application-label-fi:'example'
application-label-fr:'example'
application-label-fr-CA:'example'
application-label-gl-ES:'example'
application-label-gu-IN:'example'
application-label-hi:'example'
application-label-hr:'example'
application-label-hu:'example'
application-label-hy-AM:'example'
application-label-in:'example'
application-label-is-IS:'example'
application-label-it:'example'
application-label-iw:'example'
application-label-ja:'example'
application-label-ka-GE:'example'
application-label-kk-KZ:'example'
application-label-km-KH:'example'
application-label-kn-IN:'example'
application-label-ko:'example'
application-label-ky-KG:'example'
application-label-lo-LA:'example'
application-label-lt:'example'
application-label-lv:'example'
application-label-mk-MK:'example'
application-label-ml-IN:'example'
application-label-mn-MN:'example'
application-label-mr-IN:'example'
application-label-ms-MY:'example'
application-label-my-MM:'example'
application-label-nb:'example'
application-label-ne-NP:'example'
application-label-nl:'example'
application-label-pa-IN:'example'
application-label-pl:'example'
application-label-pt:'example'
application-label-pt-BR:'example'
application-label-pt-PT:'example'
application-label-ro:'example'
application-label-ru:'example'
application-label-si-LK:'example'
application-label-sk:'example'
application-label-sl:'example'
application-label-sq-AL:'example'
application-label-sr:'example'
application-label-sr-Latn:'example'
application-label-sv:'example'
application-label-sw:'example'
application-label-ta-IN:'example'
application-label-te-IN:'example'
application-label-th:'example'
application-label-tl:'example'
application-label-tr:'example'
application-label-uk:'example'
application-label-ur-PK:'example'
application-label-uz-UZ:'example'
application-label-vi:'example'
application-label-zh-CN:'example'
application-label-zh-HK:'example'
application-label-zh-TW:'example'
application-label-zu:'example'
application-icon-120:'res/drawable-ldpi-v4/ic_launcher.png'
application-icon-160:'res/drawable-mdpi-v4/ic_launcher.png'
application-icon-240:'res/drawable-hdpi-v4/ic_launcher.png'
application-icon-320:'res/drawable-xhdpi-v4/ic_launcher.png'
application-icon-480:'res/drawable-xhdpi-v4/ic_launcher.png'
application-icon-640:'res/drawable-xhdpi-v4/ic_launcher.png'
application: label='example' icon='res/drawable-mdpi-v4/ic_launcher.png'
launchable-activity: name='com.android.example_app.architecture.MainActivity'  label='example' icon=''
feature-group: label=''
  uses-feature: name='android.hardware.faketouch'
  uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
main
other-activities
other-services
supports-screens: 'normal' 'large' 'xlarge'
supports-any-density: 'true'
requires-smallest-width:'200'
locales: '--_--' 'af' 'am' 'ar' 'az-AZ' 'be-BY' 'bg' 'bn-BD' 'bs-BA' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-GB' 'en-IN' 'es' 'es-US' 'et-EE' 'eu-ES' 'fa' 'fi' 'fr' 'fr-CA' 'gl-ES' 'gu-IN' 'hi' 'hr' 'hu' 'hy-AM' 'in' 'is-IS' 'it
' 'iw' 'ja' 'ka-GE' 'kk-KZ' 'km-KH' 'kn-IN' 'ko' 'ky-KG' 'lo-LA' 'lt' 'lv' 'mk-MK' 'ml-IN' 'mn-MN' 'mr-IN' 'ms-MY' 'my-MM' 'nb' 'ne-NP' 'nl' 'pa-IN' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si-LK' 'sk' 'sl' 'sq-AL' 'sr' 'sr-Latn'
 'sv' 'sw' 'ta-IN' 'te-IN' 'th' 'tl' 'tr' 'uk' 'ur-PK' 'uz-UZ' 'vi' 'zh-CN' 'zh-HK' 'zh-TW' 'zu'
densities: '120' '160' '240' '320' '480' '640'

可安装aapt dump badging output

package: name='com.android.example_app' versionCode='99' versionName='7.7.7' platformBuildVersionName=''
sdkVersion:'19'
targetSdkVersion:'26'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
application-label:'example'
application-label-af:'example'
application-label-am:'example'
application-label-ar:'example'
application-label-az-AZ:'example'
application-label-be-BY:'example'
application-label-bg:'example'
application-label-bn-BD:'example'
application-label-bs-BA:'example'
application-label-ca:'example'
application-label-cs:'example'
application-label-da:'example'
application-label-de:'example'
application-label-el:'example'
application-label-en-AU:'example'
application-label-en-GB:'example'
application-label-en-IN:'example'
application-label-es:'example'
application-label-es-US:'example'
application-label-et-EE:'example'
application-label-eu-ES:'example'
application-label-fa:'example'
application-label-fi:'example'
application-label-fr:'example'
application-label-fr-CA:'example'
application-label-gl-ES:'example'
application-label-gu-IN:'example'
application-label-hi:'example'
application-label-hr:'example'
application-label-hu:'example'
application-label-hy-AM:'example'
application-label-in:'example'
application-label-is-IS:'example'
application-label-it:'example'
application-label-iw:'example'
application-label-ja:'example'
application-label-ka-GE:'example'
application-label-kk-KZ:'example'
application-label-km-KH:'example'
application-label-kn-IN:'example'
application-label-ko:'example'
application-label-ky-KG:'example'
application-label-lo-LA:'example'
application-label-lt:'example'
application-label-lv:'example'
application-label-mk-MK:'example'
application-label-ml-IN:'example'
application-label-mn-MN:'example'
application-label-mr-IN:'example'
application-label-ms-MY:'example'
application-label-my-MM:'example'
application-label-nb:'example'
application-label-ne-NP:'example'
application-label-nl:'example'
application-label-pa-IN:'example'
application-label-pl:'example'
application-label-pt:'example'
application-label-pt-BR:'example'
application-label-pt-PT:'example'
application-label-ro:'example'
application-label-ru:'example'
application-label-si-LK:'example'
application-label-sk:'example'
application-label-sl:'example'
application-label-sq-AL:'example'
application-label-sr:'example'
application-label-sr-Latn:'example'
application-label-sv:'example'
application-label-sw:'example'
application-label-ta-IN:'example'
application-label-te-IN:'example'
application-label-th:'example'
application-label-tl:'example'
application-label-tr:'example'
application-label-uk:'example'
application-label-ur-PK:'example'
application-label-uz-UZ:'example'
application-label-vi:'example'
application-label-zh-CN:'example'
application-label-zh-HK:'example'
application-label-zh-TW:'example'
application-label-zu:'example'
application-icon-120:'res/drawable-ldpi-v4/ic_launcher.png'
application-icon-160:'res/drawable-mdpi-v4/ic_launcher.png'
application-icon-240:'res/drawable-hdpi-v4/ic_launcher.png'
application-icon-320:'res/drawable-xhdpi-v4/ic_launcher.png'
application-icon-480:'res/drawable-xhdpi-v4/ic_launcher.png'
application-icon-640:'res/drawable-xhdpi-v4/ic_launcher.png'
application: label='example' icon='res/drawable-mdpi-v4/ic_launcher.png'
launchable-activity: name='com.android.example_app.architecture.MainActivity'  label='example' icon=''
feature-group: label=''
  uses-feature: name='android.hardware.faketouch'
  uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
main
other-activities
other-services
supports-screens: 'normal' 'large' 'xlarge'
supports-any-density: 'true'
requires-smallest-width:'200'
locales: '--_--' 'af' 'am' 'ar' 'az-AZ' 'be-BY' 'bg' 'bn-BD' 'bs-BA' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-GB' 'en-IN' 'es' 'es-US' 'et-EE' 'eu-ES' 'fa' 'fi' 'fr' 'fr-CA' 'gl-ES' 'gu-IN' 'hi' 'hr' 'hu' 'hy-AM' 'in' 'is-IS' 'it
' 'iw' 'ja' 'ka-GE' 'kk-KZ' 'km-KH' 'kn-IN' 'ko' 'ky-KG' 'lo-LA' 'lt' 'lv' 'mk-MK' 'ml-IN' 'mn-MN' 'mr-IN' 'ms-MY' 'my-MM' 'nb' 'ne-NP' 'nl' 'pa-IN' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si-LK' 'sk' 'sl' 'sq-AL' 'sr' 'sr-Latn'
 'sv' 'sw' 'ta-IN' 'te-IN' 'th' 'tl' 'tr' 'uk' 'ur-PK' 'uz-UZ' 'vi' 'zh-CN' 'zh-HK' 'zh-TW' 'zu'
densities: '120' '160' '240' '320' '480' '640'

Edit2:我还验证了免安装应用和可安装应用的可用国家/地区是否匹配。

您可以在我发布的错误报告 link 中看到这一点,但问题最终是 google Play 商店验证的一些错误。在清单中将 smallScreens 设置为 false 是一个问题(显然已修复),在清单中定义 requiresSmallestWidthDp 值也是一个问题(即使这两个值在即时清单和可安装清单中都是相同的)。我不确定 requiresSmallestWidthDp 部分是否已修复,但 Play 商店不再支持它,所以我只是摆脱了它。