React Native应用无法在Android Studio模拟器运行,报错求助
解决React Native应用在Android模拟器启动失败的问题
问题现象
在Android Studio的Pixel模拟器上运行React Native应用时出现以下报错:
ERROR Error: Exception in HostObject::get for prop 'NativeUnimoduleProxy': java.lang.SecurityException: Permission Denial: registerScreenCaptureObserver from pid=9773, uid=10182 requires android.permission.DETECT_SCREEN_CAPTURE, js engine: hermes
ERROR Invariant Violation: "main" has not been registered. This can happen if:
- Metro(本地开发服务器)在错误的文件夹中运行。检查Metro是否正在运行,停止后在当前项目中重启。
- 某个模块因错误加载失败,且未调用
AppRegistry.registerComponent,js engine: hermes
应用在外部移动设备上可正常运行。
解决方案
1. 添加缺失的权限
打开项目中的android/app/src/main/AndroidManifest.xml文件,在<manifest>标签内添加以下权限声明:
<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
这个权限是Android 12及以上系统检测屏幕录制所需的,模拟器通常使用较高版本的Android系统,因此需要手动添加。
2. 重置Metro缓存并重启服务
- 停止当前正在运行的Metro服务(按下
Ctrl+C) - 执行以下命令清除缓存并重启Metro:
npx react-native start --reset-cache - 重新运行应用:
npx react-native run-android
3. 清理Android项目构建缓存(可选)
如果上述步骤无效,尝试清理Android项目的构建缓存:
- 通过Android Studio操作:点击顶部菜单栏的
Build->Clean Project,完成后再点击Rebuild Project - 或者使用命令行:
清理完成后重新运行应用即可。cd android && ./gradlew clean && cd ..
内容的提问来源于stack exchange,提问作者Chathura Abeygunawardhana
相关产品推荐
相关产品推荐

