Google Play Console 上传错误消息:无法根据设备配置声明不同版本的 Google Play 服务
Google Play Console upload error message: cannot declare different versions of Google Play services depending on the device configuration
将完成的应用程序包上传到 Google Play 控制台时遇到问题。下载后,我收到此消息:
“应用无法根据设备配置声明不同版本的 Google Play 服务。找到以下版本:[0, 12451000]”
该应用显示底部智能横幅(Google 广告),使用网络,除了算法之外,它没有做更多的事情。
build.gradle:
ext {
version = '1.0'
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.6.21'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0-alpha09'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle:应用程序:
plugins {
id 'kotlin-android'
id 'org.jetbrains.kotlin.kapt'
id 'com.android.application'
}
android {
...
signingConfigs {
debug {
...
}
release {
...
}
}
compileSdk 32
buildToolsVersion '30.0.3'
defaultConfig {
minSdk 19
targetSdk 32
versionName '1.0'
versionCode 100
multiDexEnabled true
...
}
buildFeatures {
//noinspection DataBindingWithoutKapt
dataBinding true
viewBinding true
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
}
beta {
applicationIdSuffix ".beta"
versionNameSuffix "-beta"
}
release {
applicationIdSuffix ".release"
versionNameSuffix "-release"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility "11"
targetCompatibility "11"
}
kotlinOptions {
jvmTarget = "11"
}
ndkVersion '25.0.8221429 rc2'
flavorDimensions "level"
productFlavors {
free {
...
dimension "level"
versionCode 100
versionName "1.0"
targetSdk 32
minSdk 19
signingConfig signingConfigs.release
}
pro {
...
dimension "level"
versionCode 100
versionName "1.0"
targetSdk 32
minSdk 19
signingConfig signingConfigs.release
}
}
sourceSets {
free {
java { srcDirs 'src/free/java' }
res { srcDirs 'src/free/res' }
}
pro {
java { srcDirs 'src/pro/java' }
res { srcDirs 'src/pro/res' }
}
}
lint {
checkReleaseBuilds false
}
dependenciesInfo {
includeInApk true
includeInBundle true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1-native-mt'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1-native-mt'
implementation 'androidx.appcompat:appcompat:1.6.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'io.reactivex.rxjava3:rxjava:3.1.4'
implementation 'com.google.android.gms:play-services-ads:20.6.0'
implementation 'com.android.support:multidex:1.0.3'
}
task wrapper(type: Wrapper) {
gradleVersion = '7.3'
}
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingLeanbackLauncher">
<!-- Need to listen to UDP datagrams -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- For Android S devices & GMA SDK version 20.3.0 or lower -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<!-- Support Android TV and do not require a touchscreen -->
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="<APP_KEY>" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".ActivitySplash"
android:exported="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Preference activity -->
<activity
android:name=".ActivityMain"
android:exported="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
</activity>
</application>
</manifest>
link 与我审查过的那个问题相关:
The app cannot declare different versions of Google Play services depending on the device configuration
https://issuetracker.google.com/issues/223240936#comment21
https://issuetracker.google.com/issues/223240936
我做了什么:
- 深入研究 Gradle 文档以更好地理解(插件、实现)。老实说,我从来没有做过这项工作,因为它总是与我刚刚适应的基本 Gradle 一起工作。这是一个调整许多不一致的机会(虽然可能仍然存在)。
- 请求Google开发人员支持(尚未答复)
- 当然:清理项目,使现金无效
但我仍然完全被困住了。我不知道如何解决这个问题。
这是我第一次 post 在这个论坛上,尽管十多年来一直在深入探索 Whosebug。我一直设法通过在 Whosebug、其他论坛、文档上寻找解决方案来解决问题……直到现在。以上所有 link 都没有帮助。
谁能帮帮我?
最好的问候
编辑:错误现已修复,现在即使在 7.3.0-*
中也应该可以正常工作
Play 管理中心目前存在使用 Android Gradle 插件 7.3.0-alphaXX 构建的应用程序的错误。如果您恢复到 7.2 0 直到此问题得到修复,这应该会解除您的阻止。
好的,问题 (sssssss) 似乎已解决。主要关键是@Pierre 在有问题的 Android Gradle 插件 7.0.6-alpha06 上的建议,用 com.android.tools.build:gradle:7.2.0-rc01
(+ 或 - Epsilon 版本)替换。它显然解决了上传到 Google Play 控制台时 Google Play 的多个版本的初始问题。
大部分时间我都迷失在 Gradle 和库中,包括 + build.gradle 语法,与晦涩的错误消息相关联。作为开发人员,我们确切地知道我们导入了哪些库、我们选择了哪些版本以及为什么。我们要不要?好吧,不,我们中的大多数人(从开发人员到经理)都没有,除非在特定情况下。我们 100% 专注于我们的应用程序:功能、图像、性能、数据库、算法、客户体验...... IDE 和 Gradle 只是实现目标的一种方式,而不是 objective .
Gradle 是一个无所不能的天才工具,甚至是杰出工程师设计的早晨咖啡。但它不是面向结束 user/developer 的。我不想了解Gradle的全部花里胡哨的东西,我只是想把我的项目开发搞定。
我建议为各种类型的项目提供一组可以重复使用和调整的示例,而不是那些只有几个项目相关的广泛参考文档。
对于遇到以下错误的 Google Play 控制台,我也可以这样说:
- 版本代码xxx已被使用。尝试另一个版本代码。:只需增加您的代码版本(整数格式)
- 您的 APK 或 Android App Bundle 需要包含程序包名称 xx.xxxxxxx.free.release:您在某处混淆了 app/variant/flavours 前缀
- 您的 Android App Bundle 使用错误的密钥签名。:使用不同的密钥多次上传时抛出。然后你必须找出控制台“选择”了哪一个...
- Android App Bundle 未签名。:表示您尝试上传带有调试标记的包
- 应用程序无法根据设备配置声明不同版本的 Google Play 服务。发现以下版本:[0, 12451000]:gradle 7.0.6-alpha06 库中的错误
再次感谢@Pierre 帮助我度过难关。
将完成的应用程序包上传到 Google Play 控制台时遇到问题。下载后,我收到此消息:
“应用无法根据设备配置声明不同版本的 Google Play 服务。找到以下版本:[0, 12451000]”
该应用显示底部智能横幅(Google 广告),使用网络,除了算法之外,它没有做更多的事情。
build.gradle:
ext {
version = '1.0'
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.6.21'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0-alpha09'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle:应用程序:
plugins {
id 'kotlin-android'
id 'org.jetbrains.kotlin.kapt'
id 'com.android.application'
}
android {
...
signingConfigs {
debug {
...
}
release {
...
}
}
compileSdk 32
buildToolsVersion '30.0.3'
defaultConfig {
minSdk 19
targetSdk 32
versionName '1.0'
versionCode 100
multiDexEnabled true
...
}
buildFeatures {
//noinspection DataBindingWithoutKapt
dataBinding true
viewBinding true
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
}
beta {
applicationIdSuffix ".beta"
versionNameSuffix "-beta"
}
release {
applicationIdSuffix ".release"
versionNameSuffix "-release"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility "11"
targetCompatibility "11"
}
kotlinOptions {
jvmTarget = "11"
}
ndkVersion '25.0.8221429 rc2'
flavorDimensions "level"
productFlavors {
free {
...
dimension "level"
versionCode 100
versionName "1.0"
targetSdk 32
minSdk 19
signingConfig signingConfigs.release
}
pro {
...
dimension "level"
versionCode 100
versionName "1.0"
targetSdk 32
minSdk 19
signingConfig signingConfigs.release
}
}
sourceSets {
free {
java { srcDirs 'src/free/java' }
res { srcDirs 'src/free/res' }
}
pro {
java { srcDirs 'src/pro/java' }
res { srcDirs 'src/pro/res' }
}
}
lint {
checkReleaseBuilds false
}
dependenciesInfo {
includeInApk true
includeInBundle true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1-native-mt'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1-native-mt'
implementation 'androidx.appcompat:appcompat:1.6.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'io.reactivex.rxjava3:rxjava:3.1.4'
implementation 'com.google.android.gms:play-services-ads:20.6.0'
implementation 'com.android.support:multidex:1.0.3'
}
task wrapper(type: Wrapper) {
gradleVersion = '7.3'
}
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingLeanbackLauncher">
<!-- Need to listen to UDP datagrams -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- For Android S devices & GMA SDK version 20.3.0 or lower -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<!-- Support Android TV and do not require a touchscreen -->
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="<APP_KEY>" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".ActivitySplash"
android:exported="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Preference activity -->
<activity
android:name=".ActivityMain"
android:exported="true"
android:theme="@style/MyTheme.Blue.SplashScreen">
</activity>
</application>
</manifest>
link 与我审查过的那个问题相关:
The app cannot declare different versions of Google Play services depending on the device configuration
https://issuetracker.google.com/issues/223240936#comment21
https://issuetracker.google.com/issues/223240936
我做了什么:
- 深入研究 Gradle 文档以更好地理解(插件、实现)。老实说,我从来没有做过这项工作,因为它总是与我刚刚适应的基本 Gradle 一起工作。这是一个调整许多不一致的机会(虽然可能仍然存在)。
- 请求Google开发人员支持(尚未答复)
- 当然:清理项目,使现金无效
但我仍然完全被困住了。我不知道如何解决这个问题。
这是我第一次 post 在这个论坛上,尽管十多年来一直在深入探索 Whosebug。我一直设法通过在 Whosebug、其他论坛、文档上寻找解决方案来解决问题……直到现在。以上所有 link 都没有帮助。
谁能帮帮我? 最好的问候
编辑:错误现已修复,现在即使在 7.3.0-*
中也应该可以正常工作Play 管理中心目前存在使用 Android Gradle 插件 7.3.0-alphaXX 构建的应用程序的错误。如果您恢复到 7.2 0 直到此问题得到修复,这应该会解除您的阻止。
好的,问题 (sssssss) 似乎已解决。主要关键是@Pierre 在有问题的 Android Gradle 插件 7.0.6-alpha06 上的建议,用 com.android.tools.build:gradle:7.2.0-rc01
(+ 或 - Epsilon 版本)替换。它显然解决了上传到 Google Play 控制台时 Google Play 的多个版本的初始问题。
大部分时间我都迷失在 Gradle 和库中,包括 + build.gradle 语法,与晦涩的错误消息相关联。作为开发人员,我们确切地知道我们导入了哪些库、我们选择了哪些版本以及为什么。我们要不要?好吧,不,我们中的大多数人(从开发人员到经理)都没有,除非在特定情况下。我们 100% 专注于我们的应用程序:功能、图像、性能、数据库、算法、客户体验...... IDE 和 Gradle 只是实现目标的一种方式,而不是 objective .
Gradle 是一个无所不能的天才工具,甚至是杰出工程师设计的早晨咖啡。但它不是面向结束 user/developer 的。我不想了解Gradle的全部花里胡哨的东西,我只是想把我的项目开发搞定。
我建议为各种类型的项目提供一组可以重复使用和调整的示例,而不是那些只有几个项目相关的广泛参考文档。
对于遇到以下错误的 Google Play 控制台,我也可以这样说:
- 版本代码xxx已被使用。尝试另一个版本代码。:只需增加您的代码版本(整数格式)
- 您的 APK 或 Android App Bundle 需要包含程序包名称 xx.xxxxxxx.free.release:您在某处混淆了 app/variant/flavours 前缀
- 您的 Android App Bundle 使用错误的密钥签名。:使用不同的密钥多次上传时抛出。然后你必须找出控制台“选择”了哪一个...
- Android App Bundle 未签名。:表示您尝试上传带有调试标记的包
- 应用程序无法根据设备配置声明不同版本的 Google Play 服务。发现以下版本:[0, 12451000]:gradle 7.0.6-alpha06 库中的错误 再次感谢@Pierre 帮助我度过难关。