我正在尝试将即时应用上传到Google Play的制作轨道。我在生产中有一个相关的安装apk,以及预发布轨道中的即时应用程序。当我尝试将即时应用程序发布到生产环境时,我收到错误:“无法升级到已安装的应用程序”(与Google Play Console error - Non-upgradable to installed app中描述的错误相同)
我尝试在链接线程中遵循不同的建议,但我无处可去。当我运行aapt dump badging
时,我的目标和min sdks(分别为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的寄存器和某些值的“东西”)
<?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:我还验证了即时应用和可安装应用的可用国家/地区匹配。
答案 0 :(得分:0)
您可以在我发布的错误报告链接中看到这一点,但问题最终是谷歌游戏商店验证的一些错误。在清单中将smallScreens设置为false是一个问题(显然已修复),并且清单中定义的requiresSmallestWidthDp值也是一个问题(即使这两个值在即时和可安装清单中都是相同的)。我不确定requiresSmallestWidthDp片段是否已修复,但播放商店不再支持它,所以我摆脱它。