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

Android移除废弃JCenter后ExoPlayer依赖解析失败问题咨询

问题根因
  • JWPlayer 3.x版本硬依赖com.google.android.exoplayer:exoplayer-*:2.10.6,手动将ExoPlayer升级到2.11无法覆盖该传递依赖,构建时JWPlayer仍会拉取指定的2.10.6版本。
  • 配置google()、mavenCentral()后仍解析失败,核心原因是模块级单独配置的repositories块覆盖了全局仓库规则,Gradle解析传递依赖时不会跨仓库作用域查找,且未对ExoPlayer的拉取源做强制指定,导致构建过程去已废弃的JCenter查找对应版本。
  • ExoPlayer 2.10.6的正式产物已同步托管在Google Maven仓库,不需要重新添加JCenter源。
解决步骤

1. 修正全局仓库配置

打开项目级build.gradle,修改allprojects下的repositories配置,将所有第三方仓库统一收拢到全局配置,同时把google()放在解析优先级最高的位置,强制ExoPlayer依赖从官方源拉取:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        maven { url 'https://mvn.jwplayer.com/content/repositories/releases/' }
        maven { url 'https://jitpack.io' }
        maven { url 'https://zendesk.jfrog.io/zendesk/repo' }
        maven { url 'https://swisscodemonkeys.github.io/appbrain-sdk/maven' }

        content {
            // 强制所有ExoPlayer相关依赖只从上述官方源解析,跳过JCenter查找
            includeGroupByRegex "com\\.google\\.android\\.exoplayer.*"
        }
    }
}

修改完成后,直接删除App模块级build.gradle里单独声明的repositories块,避免模块级配置覆盖全局规则,导致传递依赖解析异常。

2. 强制锁定ExoPlayer依赖版本

打开App模块级build.gradle,在android配置块的同级位置添加如下规则,统一所有ExoPlayer组件的版本,避免版本冲突:

configurations.all {
    resolutionStrategy {
        force 'com.google.android.exoplayer:exoplayer-core:2.10.6'
        force 'com.google.android.exoplayer:exoplayer-dash:2.10.6'
        force 'com.google.android.exoplayer:exoplayer-hls:2.10.6'
        force 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.10.6'
        force 'com.google.android.exoplayer:exoplayer-ui:2.10.6'
    }
}

注意:不要随意将ExoPlayer升级到2.11及以上大版本,JWPlayer 3.x基于ExoPlayer 2.10.x API开发,跨大版本升级会触发运行时API不兼容崩溃。

3. 清理缓存重新构建

配置修改完成后,先清理旧的构建和依赖缓存:

  • 在Android Studio中依次点击File > Invalidate Caches...,勾选所有缓存清理选项后重启IDE
  • 在项目根目录终端执行命令:./gradlew clean build --refresh-dependencies,强制刷新所有依赖
异常排查

如果完成上述配置后仍报错,逐一检查以下项:

  • 全局搜索所有gradle配置文件,确认没有残留jcenter()引用;如果第三方SDK内部强制引入jcenter,添加如下规则排除ExoPlayer的jcenter解析路径:
    jcenter {
        content {
            excludeGroup "com.google.android.exoplayer"
        }
    }
    
  • 确认当前网络可以正常访问Google Maven仓库,避免代理规则拦截仓库连接
  • 确认本地Gradle缓存目录下没有残留损坏的2.10.6版本ExoPlayer文件,如有直接删除~/.gradle/caches/下对应com.google.android.exoplayer的缓存目录后重新构建

内容的提问来源于stack exchange,提问作者cesarcarlos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:00:53