🧯
Xcode 15 で Firebase の GoogleService-Info.plist に関するビルドエラーが発生した場合の対応方法
事象
発生条件
- Firebase を導入している。
- Xcode 15 にアップデートすると表示される、
Update to recommended settings
というプロジェクト設定の提案[1]のうち、Enable User Script Sandboxing
を受け入れる。
エラー内容
ビルド時に以下のようなエラーが発生し、ビルドに失敗する。
Sandbox: cp(30340) deny(1) file-read-data /Users/{xxx}/GoogleService-Info.plist
動作確認環境
- Xcode 15.0.1 (15A507)
- Swift 5.9
対応方法(暫定対応)
firebase-ios-sdk
の Issue が起票されており、解決策が提示されていた。
Firebase 側でパッチが当たるわけではなく、利用側が Xcode の設定を変更する。
Issue のコメントに記載のとおり、Xcode 15 では、User Script Sandboxing がデフォルトで YES に設定されている(Xcode 14 ではデフォルトで NO に設定されていた)。
この問題を回避するために、手動で NO に設定する。
xcodeproj に対する変更の場合
project.pbxproj
で、 ENABLE_USER_SCRIPT_SANDBOXING
の値を NO
に設定する。
App.xcodeproj/project.pbxproj:
- ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
XcodeGen を使用している場合
project.yml
の settings
に ENABLE_USER_SCRIPT_SANDBOXING: NO
を追加する。
project.yml:
settings:
base:
+ ENABLE_USER_SCRIPT_SANDBOXING: NO
Discussion