FlutterのiOSアプリをビルドしようとした際に、以下のエラーが発生しました。
Console
Error (Xcode): Sandbox: rsync.samba(3788) deny(1) file-write-create ...
Error (Xcode): Sandbox: dart(3764) deny(1) file-write-create ...
Error (Xcode): Flutter failed to read a file at "~/.last_build_id".
この記事では、その解決方法について解説します。
すぐに解決したい方のために、原因を簡潔に説明します。Xcode 15から、User Script Sandboxingのデフォルト設定が「Yes」(有効)になっていることが原因です。
「Xcodeプロジェクトファイル」の「Build Settings」に移動し、「User Script Sandboxing」を「No」に変更します。
Xcodeで導入されたセキュリティ機能の一つです。この機能は、ビルドプロセス中に実行されるスクリプトの動作を制限することで、潜在的なセキュリティリスクを軽減します。
具体的には、ビルドフェーズで実行されるスクリプト(例えば、Run Scriptビルドフェーズで指定されたスクリプトやCocoaPodsのスクリプトなど)の権限を制限することで、システム全体に悪影響を及ぼす可能性のある操作を防ぐ役割を果たします。これにより、開発者や他のプロセスが実行するスクリプトが、予期しないファイルへのアクセスや変更を行わないように保護されます。
Xcode 15から、この設定がデフォルトで「Yes」(有効)になっているため、特定のスクリプトが適切な権限を持たない場合にエラーが発生する可能性があります。