React Native打开相机崩溃 已配置Info.plist权限仍无弹窗
iOS端react-native-image-picker唤起相机崩溃无权限弹窗修复
- 补全原生依赖安装
仅执行npm i react-native-image-picker只会安装JS层依赖,iOS原生模块不会自动同步。直接在项目根目录执行命令:
cd ios && pod install && cd ..
M1芯片设备执行pod install报错的话,先执行架构适配命令再安装:
sudo arch -x86_64 gem install ffi arch -x86_64 pod install
依赖安装完成后必须完全关闭Metro打包服务、退出Xcode,重新执行npx react-native run-ios编译启动,热更新不会加载原生层的修改。
确认Info.plist配置位置正确
你贴出的权限键值内容本身没有问题,配置不生效基本都是加错了文件:- 权限配置必须写入
ios/[你的项目名]/Info.plist,不要写到Pods目录、编译输出目录下的同名plist文件里 - 写完配置后在Xcode里按
Cmd + Shift + K清理编译缓存,再重新编译,旧缓存不会读取新的plist配置 - 不要在配置项周围加格式错误的标签或者冗余注释,会导致plist解析失败,系统读不到权限配置就会直接崩溃,不会弹权限申请窗
- 权限配置必须写入
注意iOS模拟器的调试限制
iOS模拟器没有实体相机硬件,Xcode 13及以上版本的模拟器调用相机接口会直接因为硬件缺失崩溃,不会触发权限流程。- 要验证相机权限申请、拍摄功能,必须连接iOS真机调试
- 仅测试相册选择功能的话,模拟器可以正常触发相册权限弹窗,不会崩溃
如果以上操作做完还是崩溃,直接在Xcode里打开编译产物里的Info.plist,检查三个权限键值是否真的被打包进安装包,没读到就说明配置路径错误或者编译缓存没清理干净。
内容的提问来源于stack exchange,提问作者Grant Solomons
相关产品推荐
相关产品推荐

