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

ExoPlayer 2.16.1无法导入DefaultHttpDataSourceFactory,求助解决TLS报错

解决ExoPlayer 2.16.1无法导入DefaultHttpDataSourceFactory的问题

问题分析

无法导入DefaultHttpDataSourceFactory的核心原因大概率是依赖重复或Android Studio缓存冲突,以下是分步解决方案:

解决方案

1. 修正依赖配置

你同时引入了完整的exoplayer包和拆分的exoplayer-core等模块,这会导致依赖冲突,进而引发类查找失败。移除重复的完整包依赖,保留拆分模块即可:

// 移除重复的完整包依赖
// implementation 'com.google.android.exoplayer:exoplayer:2.16.1'
implementation 'com.google.android.exoplayer:exoplayer-core:2.16.1'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.16.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.16.1'

2. 确认正确的导入语句

DefaultHttpDataSourceFactory位于exoplayer-core的upstream包下,确保导入语句准确:

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

3. 清理缓存并同步Gradle

如果上述步骤仍无效,执行以下操作修复IDE缓存问题:

  • 点击菜单栏 File -> Invalidate Caches... -> Invalidate and Restart,清理缓存并重启Android Studio
  • 重启后点击 File -> Sync Project with Gradle Files,重新同步依赖

额外验证(针对原报错)

成功导入类后,你的DefaultHttpDataSourceFactory初始化代码已包含允许跨协议重定向的配置,结合已设置的android:usesCleartextTraffic="true",应该可以解决no TLS versions for cleartext connections报错。若仍有问题,可显式添加明文流量相关配置:

DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory(
    Util.getUserAgent(context, "your-application-name"),
    null /* listener */,
    DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
    DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
    true /* allowCrossProtocolRedirects */
);
// 显式配置适配明文请求
httpDataSourceFactory.getDefaultRequestProperties().set("Accept", "*/*");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:25:17