因为需要使用相机,于是我在项目里引入了一个社区知名库 react-native-permission 来管理权限
于是在正常 yarn install && pod install 后出现了这样的报错信息
no permission Handler Detected
第一次尝试: 官方文档上这样写:
By default no permission handler is linked. To add one, update your package.json by adding the permissions used in your app, then run npx react-native setup-ios-permissions followed by pod install (reactNativePermissionsIOS.json is also supported).
于是我修改package.json ,添加
//package.json
"reactNativePermissionsIOS": [
"Camera"
],
然后执行 npx react-native setup-ios-permissions 命令执行成功,未报错 以为解决了。结果重新运行还是一样的错误。 第一次尝试失败!
第二次尝试: 浏览社区以及issue,我看到作者有说是xcode缓存的问题,然后就开始了多次的重复clean build folder , clean drvicedata 的行为。 花了大量的时间,结果还是一样的 第三次尝试:把nodeMoudles错误注释掉,打个补丁,确实不报错了,但是验证也没了
第四次尝试: 开始寻找解决方法,于是在 No Permission Handler Detected (IOS) · Issue #449 · zoontek/react-native-permissions (github.com) 这个issue里看到作者pod里出现 Permission-Camera 于是选择手动链接处理程序
在Podfile里添加以下片段
//podfile
target 'sanitationApp' do
xxx
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "../node_modules/react-native-permissions/ios/Camera/Permission-Camera.podspec"
xxx
然后执行podfile,看到Permission-Camera成功被添加到pod
重新安装应用,发现问题得到完美解决
恭喜自己又解决了一个坑
一周后补充:
可能是缓存的问题,把应用删掉,derivedData,cache 清掉,去掉手动链接突然不报错了。写rn越久,就越发现重启真的解决问题
所以本文废弃,仅做参考