React Native集成react-native-webrtc安卓端报错:null is not an object(evaluating webrtcmodule.sendergetcapabilities)
解决React Native集成react-native-webrtc安卓端"null is not an object (evaluating webrtcmodule.sendergetcapabilities)"报错
1. 手动确认安卓端链接配置
自动链接可能失效,需手动检查以下文件:
- android/app/build.gradle:确保依赖中包含webrtc模块
dependencies { implementation project(':react-native-webrtc') } - android/settings.gradle:添加模块引用
include ':react-native-webrtc' project(':react-native-webrtc').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webrtc/android') - MainApplication.java:注册WebRTC模块包
import com.oney.WebRTCModule.WebRTCModulePackage; @Override protected List<ReactPackage> getPackages() { List<ReactPackage> packages = new PackageList(this).getPackages(); packages.add(new WebRTCModulePackage()); return packages; }
2. 清理安卓构建缓存
执行命令彻底清理后重新构建:
cd android ./gradlew clean cd .. npx react-native run-android
3. 匹配react-native-webrtc与RN版本兼容性
不同RN版本对应不同的webrtc包版本,卸载当前版本后安装适配版本:
npm uninstall react-native-webrtc npm install react-native-webrtc@适配版本号
4. 检查并添加必要权限
在android/app/src/main/AndroidManifest.xml中添加权限,避免模块初始化异常:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
5. 调整WebRTC初始化时机
避免App启动时立即调用WebRTC方法,确保模块完成初始化:
import { useEffect } from 'react'; import { RTCPeerConnection } from 'react-native-webrtc'; useEffect(() => { const initWebRTC = async () => { // 延迟等待模块初始化完成 await new Promise(resolve => setTimeout(resolve, 100)); const capabilities = RTCPeerConnection.getCapabilities('video'); console.log(capabilities); }; initWebRTC(); }, []);
内容的提问来源于stack exchange,提问作者jinal patel
相关产品推荐
相关产品推荐

