react-native-jitsi-meet在Android端Jitsi视图显示黑屏问题求助
适用场景
针对react-native 0.66.4版本搭配react-native-jitsi-meet@2.2.0时,Android端JitsiMeetView组件、Jitsi Extended Activity均渲染黑屏、无法加载会议内容的问题,可按以下顺序逐一排查修复:
修正Gradle构建配置
2.2.0版本的react-native-jitsi-meet内置原生SDK存在so库冲突、版本兼容阈值问题,直接打开android/app/build.gradle修改对应配置:- 将minSdkVersion调整为24及以上,targetSdkVersion固定为30/31,不要使用32及以上版本——高版本Android的PendingIntent强制校验规则和该版本SDK不兼容,会直接导致WebView内核初始化失败
- 新增so库加载规则,解决重复依赖导致的native层加载失败
- 开启multidex支持,避免方法数超限导致类找不到
对应配置代码:
android { defaultConfig { minSdkVersion 24 targetSdkVersion 30 multiDexEnabled true ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } } packagingOptions { pickFirst 'lib/arm64-v8a/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' } }额外检查:如果项目中手动引入了
react-native-webview,先移除依赖,该版本jitsi-meet内置了固定版本的webview内核,版本冲突会直接导致渲染黑屏。补全AndroidManifest配置
- 在
<application>标签下添加android:usesCleartextTraffic="true",支持HTTP协议的自建会议地址加载 - 给Jitsi相关Activity开启硬件加速,关闭硬件加速时WebView渲染视频流会直接输出黑屏
- 补全必要权限声明
对应Activity配置示例:
<activity android:name="org.jitsi.meet.sdk.JitsiMeetActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:hardwareAccelerated="true" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:windowSoftInputMode="adjustResize"/>需要声明的基础权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />注意Android 12及以上系统需要手动动态申请相机、麦克风权限,权限被拒绝时该版本SDK不会弹出提示,直接渲染黑屏。
- 在
校验调用参数与布局层级
- 传入的会议地址必须是完整的带协议头的URL,不能传空字符串、相对路径,自建服务需要确认服务端版本和2.2.0版本SDK匹配,服务端版本过高会因协议不兼容导致加载失败
- 不要在Jitsi组件外层套带
opacity: 0、transform: scale(0)、display: none属性的容器,组件被遮挡时视觉表现和黑屏一致 - 不要在Jitsi组件挂载前提前调用会议初始化方法,初始化时序错误会导致渲染上下文丢失。
补充Release包混淆规则
如果Debug包正常、Release包黑屏,直接在proguard-rules.pro中添加以下规则,避免混淆时删除Jitsi相关类:-keep class org.jitsi.meet.** { *; } -keep class org.jitsi.meet.sdk.** { *; } -keep class com.facebook.react.views.webview.** { *; }
内容的提问来源于stack exchange,提问作者JPithwa
相关产品推荐
相关产品推荐

