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

ExoPlayer无法导入DefaultHttpDataSourceFactory类的问题求助

解决ExoPlayer无法导入DefaultHttpDataSourceFactory的问题

错误信息

error: cannot find symbol
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
^
symbol: class DefaultHttpDataSourceFactory
location: package com.google.android.exoplayer2.upstream

问题根源

你的Gradle依赖存在重复引入、版本冲突问题,同时ExoPlayer 2.17+版本对DefaultHttpDataSourceFactory进行了重构,这两个原因共同导致类无法找到。

解决方案

1. 清理并统一ExoPlayer依赖

你的依赖中重复添加了2.18.4和2.11.8两个版本的ExoPlayer,且存在冗余依赖项。将dependencies中的ExoPlayer相关依赖替换为以下统一版本配置:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

    implementation 'com.android.volley:volley:1.2.1'

    // 仅保留需要的ExoPlayer模块,统一使用2.18.4版本
    implementation 'com.google.android.exoplayer:exoplayer-core:2.18.4'
    implementation 'com.google.android.exoplayer:exoplayer-hls:2.18.4'
    implementation 'com.google.android.exoplayer:exoplayer-ui:2.18.4'
}

2. 适配高版本ExoPlayer的DataSource构造方式

ExoPlayer 2.17+版本中,DefaultHttpDataSourceFactory已被弃用,改用DefaultHttpDataSource.Factory的Builder模式构造数据源。修改播放代码中的数据源创建部分:

原代码:

DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
        "exoplayer-codelab",
        DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
        DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
        true /* allowCrossProtocolRedirects */,
        DefaultHttpDataSourceFactory.DEFAULT_SSL_SOCKET_FACTORY);

替换为:

DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory()
        .setUserAgent("exoplayer-codelab")
        .setConnectTimeoutMs(DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS)
        .setReadTimeoutMs(DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS)
        .setAllowCrossProtocolRedirects(true);

同时,删除旧的导入语句:

import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;

保留正确的导入:

import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;

3. 同步并重建项目

  • 点击Android Studio右上角的Sync Project with Gradle Files按钮同步依赖
  • 执行Build -> Clean Project清理缓存,再执行Build -> Rebuild Project重新编译

内容的提问来源于stack exchange,提问作者Saif Uddin Shrabon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:55:06