🧯

Xcode 15 で Firebase の GoogleService-Info.plist に関するビルドエラーが発生した場合の対応方法

2023/11/29に公開

事象

発生条件

  1. Firebase を導入している。
  2. 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 が起票されており、解決策が提示されていた。

https://github.com/firebase/firebase-ios-sdk/issues/11400#issuecomment-1581074907

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.ymlsettingsENABLE_USER_SCRIPT_SANDBOXING: NO を追加する。

project.yml:

settings:
  base:
+    ENABLE_USER_SCRIPT_SANDBOXING: NO
脚注
  1. 「Update to recommended settings」を表示する方法 ↩︎

Discussion