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

我做了什么:

但我仍然完全被困住了。我不知道如何解决这个问题。

这是我第一次 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 控制台,我也可以这样说:

  1. 版本代码xxx已被使用。尝试另一个版本代码。:只需增加您的代码版本(整数格式)
  2. 您的 APK 或 Android App Bundle 需要包含程序包名称 xx.xxxxxxx.free.release:您在某处混淆了 app/variant/flavours 前缀
  3. 您的 Android App Bundle 使用错误的密钥签名。:使用不同的密钥多次上传时抛出。然后你必须找出控制台“选择”了哪一个...
  4. Android App Bundle 未签名。:表示您尝试上传带有调试标记的包
  5. 应用程序无法根据设备配置声明不同版本的 Google Play 服务。发现以下版本:[0, 12451000]:gradle 7.0.6-alpha06 库中的错误 再次感谢@Pierre 帮助我度过难关。