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

Android WebRTC开发报错:PeerConnection.IceServer.builder方法找不到

解决Android WebRTC中PeerConnection.IceServer.builder(String)找不到符号的问题

这个问题我帮不少开发者排查过,核心原因基本都是你项目使用的WebRTC版本和参考Demo的版本不一致,导致API发生了变更。下面给你具体的解决方案:

1. 先搞懂API变更的原因

在WebRTC的版本迭代过程中,官方重构了IceServer.Builder的构造逻辑:

  • 旧版本(比如1.0.30000之前的部分版本)支持直接通过builder(String url)传入STUN/TURN地址;
  • 新版本中这个带参构造方法被移除了,换成了无参的builder(),然后需要通过setUrls()方法来设置服务器地址。

你的Demo能正常运行,说明它用的是还支持旧API的版本,而你的项目依赖了更新的WebRTC包,所以才会出现“无法找到符号方法builder(String)”的错误。

2. 适配新版本API的修改方案

把你的代码改成下面的写法,就能兼容最新的WebRTC版本:

List<PeerConnection.IceServer> iceServers = new ArrayList<>();

// 构建STUN服务器
PeerConnection.IceServer stunServer = PeerConnection.IceServer.builder()
        .setUrls("stun:x.ga")
        .setTlsCertPolicy(PeerConnection.TlsCertPolicy.TLS_CERT_POLICY_INSECURE_NO_CHECK)
        .createIceServer();

// 构建TURN服务器
PeerConnection.IceServer turnServer = PeerConnection.IceServer.builder()
        .setUrls("turn:x.ga?transport=udp")
        .setUsername("user7")
        .setPassword("abc123456")
        .createIceServer();

iceServers.add(stunServer);
iceServers.add(turnServer);

3. (不推荐)强制使用旧版本API

如果你非要和Demo保持完全一致的写法,可以把项目中的WebRTC依赖版本改成和Demo相同的版本。比如Demo用的是org.webrtc:google-webrtc:1.0.32006,你就在gradle里同步这个版本:

dependencies {
    implementation 'org.webrtc:google-webrtc:1.0.32006'
}

不过这种方式不建议,因为旧版本可能存在未修复的安全漏洞和bug,长期来看还是建议适配新版本API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:10:04