使用react-native-jitsi-meet时安卓端崩溃 RNPermissions为空如何解决
修复方案
1. 处理react-native-gesture-handler缺失报错
- 安装对应依赖:
npm执行:npm install react-native-gesture-handler --save
yarn执行:yarn add react-native-gesture-handler - 安卓端原生配置:打开
android/app/src/main/java/[你的项目包名]/MainActivity.java文件,添加以下内容:
头部导入语句:
MainActivity类内部添加重写方法:import com.facebook.react.ReactActivityDelegate; import com.facebook.react.ReactRootView; import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;@Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, getMainComponentName()) { @Override protected ReactRootView createRootView() { return new RNGestureHandlerEnabledRootView(MainActivity.this); } }; } - 项目入口文件(通常为index.js)最顶部添加导入语句:
import 'react-native-gesture-handler';
2. 处理react-native-permissions NativeModule.RNPermissions is null报错
- 安装匹配版本的依赖:
npm执行:npm install react-native-permissions --save
yarn执行:yarn add react-native-permissions - 安卓端配置:打开
android/build.gradle的ext块,添加权限版本配置,和你安装的版本保持一致即可:buildscript { ext { // 原有配置保留,新增下面一行 reactNativePermissionsVersion = "3.8.0" } } - 打开
android/app/src/main/AndroidManifest.xml,添加JitsiMeet必须的基础权限:<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" /> - 如果你的React Native版本低于0.60,需要手动执行link命令:
react-native link react-native-permissions
3. 最终生效操作
- 进入安卓目录清空构建缓存:Mac/Linux执行
./gradlew clean,Windows执行gradlew clean - 回到项目根目录删除node_modules文件夹以及package-lock.json/yarn.lock文件,重新执行安装依赖命令
- 完全卸载测试设备上已安装的旧版APP,重新打包运行即可
补充注意:react-native-jitsi-meet要求安卓项目的minSdkVersion至少为23,如果你项目的minSdkVersion低于23,需要先调整到23以上再执行上述操作。
内容的提问来源于stack exchange,提问作者Saheem Hussain
相关产品推荐
相关产品推荐

