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
相关产品推荐
相关产品推荐

