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

