You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:08:14