Skip to content

Xcodeでrsync.samba Sandboxエラーの解決方法

問題概要

FlutterアプリをXcodeでビルドする際に次のエラーが発生:

Sandbox: rsync.samba (13105) deny(1) file-write-create
Flutter failed to write to a file

環境: macOS 14.0以降, Apple Silicon(M1/M2系), Xcode 15/16
特徴: ファイル書き込み権限がSandBoxによりブロックされる

原因と解決アプローチ

このエラーはXcodeのユーザースクリプトサンドボックス機能が原因で発生します。セキュリティ強化のため追加された機能ですが、Flutter/CocoaPodsのワークフローと競合します。主な解決策は以下の通りです。


🔧 主な解決方法: サンドボックス設定の無効化

  1. Xcodeでプロジェクトを開き、左パネルのRunnerを選択
  2. 上部タブからBuild Settingsへ移動
  3. 検索バーにENABLE_USER_SCRIPT_SANDBOXINGと入力
  4. 全てのターゲットで設定値をNoに変更:
diff
Build Options

├─ User Script Sandboxing 
│  ├─ Debug: [Yes] → No
│  └─ Release: [Yes] → No

設定箇所のスクリーンショット

設定位置が分からない場合の参考画像

重要!

以下の全てのターゲットで設定変更が必要:

  • Runner(メインターゲット)
  • Flutter Assemble
  • Pods-*(CocoaPods使用時)
  • 存在するExtensionターゲット(例:CleverPushNotificationServiceExtension

⚠️ 設定変更後も解決しない場合の追加措置

<CodeGroup> <CodeGroupItem title="DerivedDataのクリア" active>
bash
# 1. Xcode終了
# 2. キャッシュ削除
rm -rf ~/Library/Developer/Xcode/DerivedData/*

# 3. 未使用シミュレーター削除
xcrun simctl delete unavailable
</CodeGroupItem> <CodeGroupItem title="Flutter/CocoaPodsのリセット">
bash
flutter clean       # Flutterキャッシュ削除
flutter pub get     # 依存パッケージ再取得

cd ios              # iOSディレクトリ移動
pod install         # CocoaPods再設定
</CodeGroupItem> </CodeGroup>

📌 CocoaPodsユーザー向け特別対応

ケース1: Podsプロジェクトの設定忘れ

  1. XcodeでPodsプロジェクトを選択
  2. Build SettingsENABLE_USER_SCRIPT_SANDBOXINGNoに変更:

ケース2: xcodeproj 1.26.0起因の問題(2024年10月以降)

ruby
gem 'xcodeproj', '1.25.0'  # バージョン固定
# または
gem 'cocoapods', '>=1.16.1' # 修正済みバージョン
bash
bundle install      # 依存関係更新
bundle exec pod install # プロジェクト再生成

:::caution 注意 Xcode 16を使用中の場合はxcodeproj 1.26.0が必要です。バージョン固定はXcode 15専用の対策です。 :::


🔄 根本解決が難しい場合の回避策

use_frameworks! の一時無効化(CocoaPods)

  1. ios/Podfileを開く
  2. 行頭に#を追加してコメントアウト:
diff
- use_frameworks! 
+ # use_frameworks!
  1. ターミナルで再実行:
bash
pod install --repo-update

❌ 推奨しない対応(セキュリティリスク)

権限を広げる以下の方法は非推奨です:

bash
chmod 777 ... # 脆弱性の原因に
sudo rm ...   # システムファイル破壊リスク

まとめ:効果的な解決フロー

最終手段: 上記全てが失敗した場合、開発環境の再構築を検討:

bash
# Homebrew再インストール例
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew upgrade