使用Gradle 8.5下载Android包时解决Guava依赖冲突问题
问题解决:Gradle无法选择Guava变体的解决方案
错误原因
自定义的media3_exoplayer配置未声明任何消费属性(如目标运行环境、使用场景等),导致Gradle无法区分com.google.guava:guava:32.1.3-android的Android和JRE变体,进而无法确定依赖版本。
修改方案
给自定义配置添加Android运行时相关属性,明确告知Gradle需适配Android环境的依赖变体。修改后的完整build.gradle配置如下:
repositories { google() mavenCentral() maven { url 'https://android-sdk.is.com/' } } configurations { media3_exoplayer { // 声明Android运行时相关属性,指定依赖的目标环境与使用场景 attributes { attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment, TargetJvmEnvironment.ANDROID)) attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME)) attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR)) } } } dependencies { media3_exoplayer 'androidx.media3:media3-exoplayer:1.3.0' } task getDeps { doLast { copy { duplicatesStrategy = 'exclude' from configurations.media3_exoplayer into '..' } } }
关键修改说明
TargetJvmEnvironment.ANDROID:明确指定依赖为Android环境构建,引导Gradle优先选择Android变体Usage.JAVA_RUNTIME:声明配置用于Java运行时场景,匹配依赖的runtime发布变体LibraryElements.JAR:指定需要的依赖文件格式为JAR
备选简化方案(需已应用Android插件)
若项目已引入com.android.application或com.android.library插件,可直接复用Android预定义的配置属性,简化代码:
configurations { media3_exoplayer { extendsFrom configurations.implementation } }
内容的提问来源于stack exchange,提问作者Dave Nottage
相关产品推荐
相关产品推荐

