webrtc兼容android4.x的一次探索

背景是我们有一个四年前的应用,该应用TargetVersion设定为16,这个应用四年前用了m70版本的webrtc。最近我升级到webrtc-m110,发现各种崩溃,把崩溃修好之后,发现黑屏了。为了处理黑屏,故有本文。

黑屏问题表现:

  1. offer、answer的流程都是通的
  2. ice的状态从init、complete、到failed
  3. 未见其他报错 【其他有一些崩溃主要是nosuchmethod,因为最新版的webrtc去掉了LoLLipop(andrid5.0 api21)的很多判读】
  4. 观察canditate,发现只有127.0.0.1和:::1两个canditate,但是观察旧版本,是可以获取到192.168.1.x、127.0.0.1和:::1

猜测:

网络部分的上层到下层代码有变更导致的本地网络信息识别失败。

相关代码:

  1. basic_port_allocator.cc GetNetworks()
  2. NetworkMonitorAutoDetect.java getActiveNetworkList()
  3. android_network_montor NotifyOfactiveNetworkList()

分析:

  1. basic_port_allocator.cc 中会过滤掉一次网络信息。

    => 我一开始是在这里打日志,发现底层获取的确实只有127.0.0.1和:::1,过滤也是在这两个基础上做的过滤。

  2. android_network_montor 这里是平台相关的一些处理,看到代码中有不少地方特地判断了 android_sdk_int_

    => 我在这个类中打了不少日志

    => 通过代码溯源,找前后版本的修改和提交记录 https://cs.android.com/android/platform/superproject/main/+/main:external/webrtc/sdk/android/src/jni/android_network_monitor.cc;l=659?q=NotifyOfactiveNetworkList

    => 这里花了我两天多,去看webrtc的代码变更

  3. NetworkMonitorAutoDetect 这个类是网络发现类,一开始这里就触发了崩溃,所以我修改过这个类中是否支持网络绑定的判断。

    => 对比了android13和android4的两个手机,逐一注释掉 supportNetworkCallback 的代码

    => 发现注释掉 getActiveNetworkList 中的返回,android13也会出现和android4一样的表现

    => 下面这个方法是不可用的,因为Network只有在android21才支持。

java 复制代码
@Nullable
List<NetworkInformation> getActiveNetworkList() {
  if (!supportNetworkCallback()) {
    return null;
  }
  ArrayList<NetworkInformation> netInfoList = new ArrayList<NetworkInformation>();
  for (Network network : getAllNetworks()) {
    NetworkInformation info = networkToInfo(network);
    if (info != null) {
      netInfoList.add(info);
    }
  }
  return netInfoList;
}

=> 尝试基于 NetworkInterface.getNetworkInterfaces() 构造 NetworkInformation 对象

=> 问题解决

玩~

相关推荐
dualven_in_csdn8 小时前
【webrtc】继续编译aar 2025-12-12
webrtc
kkk_皮蛋10 小时前
WebRTC 是什么?能做什么?(概览篇)
webrtc
kkk_皮蛋1 天前
WebRTC 中的临界锁实现:从 CritScope 到 RAII 机制的深度解析
webrtc·策略模式
嘻哈baby1 天前
WebRTC实时通信原理与P2P连接实战
网络协议·webrtc·p2p
好游科技1 天前
使用WebRTC开发直播系统与音视频语聊房实践指南
音视频·webrtc·im即时通讯·社交软件·私有化部署im即时通讯·社交app
好游科技2 天前
语音语聊系统开发深度解析:WebRTC与AI降噪技术如何重塑
人工智能·webrtc·交友·im即时通讯·社交软件·社交语音视频软件
福大大架构师每日一题2 天前
pion/webrtc v4.1.7 版本更新详解
webrtc
kkk_皮蛋2 天前
深入理解 WebRTC 视频质量降级机制
网络·音视频·webrtc
kkk_皮蛋2 天前
深入理解 WebRTC 临界锁实现与 C++ RAII 机制
开发语言·c++·webrtc
好游科技3 天前
使用WebRTC开发直播系统源码与音视频语聊房实践指南
音视频·webrtc·im即时通讯·社交软件·社交语音视频软件