Android Credential Manager项目构建失败求助:编译版本不兼容
问题:Credential Manager 依赖与AGP版本的编译SDK冲突
我开发一个简易Android项目学习Google Credential Manager,在UpsideDownCake或Vanilla模拟器中无法启动应用,构建阶段出现5个AAR元数据校验问题:
- 依赖
androidx.credentials:credentials-play-services-auth:1.5.0-alpha04等5个库要求项目编译SDK版本至少为35,但当前项目compileSdk为34; - 所用Android Gradle Plugin(AGP)8.5.2最高推荐compileSdk版本为34;
已尝试更新依赖版本、切换模拟器系统版本,问题仍未解决。以下是项目配置文件:
1. libs.version.toml
[versions] agp = "8.5.2" kotlin = "2.0.10" coreKtx = "1.13.1" junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" lifecycleRuntimeKtx = "2.8.4" activityCompose = "1.9.1" composeBom = "2024.04.01" navigationCompose = "2.8.0-beta06" credentials = "1.5.0-alpha04" kotlinSerialization = "1.6.3" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref="navigationCompose"} androidx-credentials-core = { group = "androidx.credentials", name = "credentials", version.ref = "credentials" } # Optional - needed for credentials support from play services, for Android 13 and below. androidx-credentials-compat = { group = "androidx.credentials", name = "credentials-play-services-auth", version.ref = "credentials" } # Added for non-deprecated LocalLifecycleOwner androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeKtx" } kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinSerialization" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
2. 项目级Build.gradle
plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.jetbrains.kotlin.android) apply false alias(libs.plugins.compose.compiler) apply false }
3. App级Build.gradle
plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.compose.compiler) alias(libs.plugins.jetbrains.kotlin.serialization) } android { namespace = "com.example.credentialmanagerdemo" compileSdk = 34 defaultConfig { applicationId = "com.example.credentialmanagerdemo" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.1" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { implementation(libs.androidx.compose.navigation) implementation(libs.androidx.credentials.core) implementation(libs.androidx.credentials.compat) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) }
解决方法
有两种可行方案,按需选择:
方案1:降级Credential Manager依赖版本
选择兼容compileSdk 34的Credentials稳定版,比如1.2.2,修改libs.version.toml中的credentials版本:
credentials = "1.2.2"
该版本无需compileSdk 35,与AGP 8.5.2的推荐compileSdk 34完全兼容,能正常使用Credential Manager核心功能。
方案2:升级AGP版本以支持compileSdk 35
AGP 8.6及以上版本开始支持compileSdk 35,操作步骤如下:
- 修改
libs.version.toml中的AGP版本:
agp = "8.6.0"
- 在App级
build.gradle中更新compileSdk和targetSdk:
android { compileSdk = 35 defaultConfig { targetSdk = 35 // 保留其他原有配置 } }
- 同步项目后,AGP 8.6.0会适配compileSdk 35,满足Credentials库的版本要求。
注:当前Kotlin版本2.0.10与AGP 8.6.0兼容,无需额外修改Kotlin版本。
内容的提问来源于stack exchange,提问作者Prakhar_Pathak
相关产品推荐
相关产品推荐

