情景复现
在配置CocoaPods和Firebase后,运行项目发现Xcode报错:
Sandbox: rsync.samba(13378) deny(1) file-write-create /Users/fangjunyu/Library/Developer/Xcode/DerivedData/TestTask-fherzfvdvmnnurexlvmqerculofh/Build/Products/Debug-iphonesimulator/TestTask.app/Frameworks/openssl_grpc.framework/_CodeSignature
环境配置
- MacOS Sonoma 14.4.1
- Xcode Version 15.4 (15F31d)
解决方案
打开Xcode项目-点击左上角顶部项目并展开右侧配置文件,找到Build Settings – TARGETS – TestTask – Build Options – User Script Sandboxing选项,默认为是,改为否即可。
然后重新启动项目,不会再次报错
踩坑记录
- Sandbox: rsync.samba(6082) deny(1)
在执行Xcode的过程中,还遇到了下述报错:
Sandbox: rsync.samba(6082) deny(1) file-write-create /Users/fangjunyu/Library/Developer/Xcode/DerivedData/TestTask-fherzfvdvmnnurexlvmqerculofh/Build/Products/Debug-iphonesimulator/TestTask.app/Frameworks/openssl_grpc.framework/_CodeSignature
解决方案为:
1)重置权限
尝试在终端中重置 DerivedData 文件夹的权限:
sudo chmod -R +rw ~/Library/Developer/Xcode/DerivedData
这将给 DerivedData 文件夹及其所有内容设置适当的读写权限。
2)清理 DerivedData 文件夹
有时清理 DerivedData 文件夹可以解决一些权限问题。在终端中运行以下命令:
rm -rf ~/Library/Developer/Xcode/DerivedData
这将清理 DerivedData 文件夹,Xcode会重新生成所需的内容。
上述两个方法我都尝试过,所以不知道是不是一个方法就可以解决该问题,可能都有效。
2、Sandbox: mkdir(10924) deny(1)
Sandbox: mkdir(10924) deny(1) file-write-create /Users/fangjunyu/Library/Developer/Xcode/DerivedData/TestTask-fherzfvdvmnnurexlvmqerculofh/Build/Intermediates.noindex/Previews/iphonesimulator/TestTask/Products/Debug-iphonesimulator/TestTaskUITests.xctest
Unexpected failure
解决方法跟上面的一样,我使用重制权限的方案就解决了:
sudo chmod -R +rw ~/Library/Developer/Xcode/DerivedData
3、无法连接Firebase问题
运行Xcode提示:
Listen for query at news failed: Missing or insufficient permissions.
该问题为Firebase配置规则导致的问题:
可以在Firebase中点击Firestore Database
默认配置:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
需将默认配置文件改为:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
修改后的配置文件是公开的,可以让任何人访问。因为需要通过配置公开规则来判断是否为规则导致Firebase无法连接的问题。
4、Analytics screen reporting is enabled. Call Analytics.logEvent(AnalyticsEventScreenView, parameters: […]) to log a screen view event. To disable automatic screen reporting, set the flag FirebaseAutomaticScreenReportingEnabled to NO (boolean) in the Info.plist
这个问题单独说明一下,其他答案有提到需要编辑Info.plist这个文件,我发现编辑Info.plist这个文件后,仍然存在这个报错:
如果你存在显示这一步,并且应用没有正确的显示内容。可能需要修改Firebase的配置规则得以解决,仅在此做一个表述。
5、如果上述问题并未解决,请检查是否为引入“GoogleService-Info”文件,我前期还忘记引入该文件。
参考资料
- Xcode15 Sandbox: rsync.samba(19728) deny(1) file-write-create /Users/mac/Library/Developer/Xcode/Der:https://blog.csdn.net/zhjm76557707/article/details/137040112
- firestore: PERMISSION_DENIED: Missing or insufficient permissions:https://stackoverflow.com/questions/46590155/firestore-permission-denied-missing-or-insufficient-permissions