Xcode 14.3におけるlibarclite_iphoneos.a不足エラーの解決法
WARNING
本エラーはXcode 14.3以降で発生File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
エラーは、iOS 11未満のデプロイメントターゲットが設定されたプロジェクトをXcode 14.3以降でビルドしようとすると発生します。
問題の根本原因
Xcode 14.3からiOS 8-10のサポートが廃止されたため、これらのバージョン向けにビルドしようとするとライブラリlibarclite_iphoneos.a
が不足します。特に以下のケースで頻発:
- CocoaPodsを使用したプロジェクトで依存ライブラリのターゲットバージョンが古い(例:iOS 8.0)
- Flutterプロジェクトで古いバージョンのプラグインを使用している
- 手動でデプロイメントターゲットを11.0未満に設定している
推奨解決策: デプロイメントターゲットの更新
方法1: CocoaPodsのpost_installスクリプトで一括更新
Podfile
を開き、末尾に以下を追加:
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
current_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f
if current_target < 11.0
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
end
end
TIP
to_f
で数値比較することで、既に11.0以上のターゲットが設定されているライブラリは変更されません
- ターミナルで以下を実行:
pod deintegrate
pod clean
pod install
方法2: Xcode UIで手動更新
- Xcodeでプロジェクトを開く
- ナビゲーターサイドバーで
Pods
プロジェクトを選択 - 各ターゲット(Podごと)をクリック
Build Settings
→iOS Deployment Target
を検索- 値が 11.0未満 のものをすべて 11.0以上 に変更
- ドロップダウンから選択(手入力不可)
方法3: Flutterプロジェクトの場合
flutter upgrade # バージョン3.7.11以上にアップグレード
flutter clean
WARNING
Flutter 3.7.11以前のバージョンでは本問題が発生するため、必ずアップグレードしてください。
補助的解決策: 不足ファイルの手動追加
一時的な対処法
この方法は非推奨です。根本解決にはデプロイメントターゲットの更新を行ってください。
- ターミナルで以下を実行:
sudo mkdir -p /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc
cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc
sudo git clone https://github.com/kamyarelyasi/Libarclite-Files.git .
sudo chmod +x *
- スクリプトファイルを修正:
Pods/Target Support Files/Pods-<プロジェクト名>/Pods-<プロジェクト名>-frameworks.sh
を開く- 以下の行を検索:sh
source="$(readlink "${source}")"
- 以下のように修正:sh
source="$(readlink -f "${source}")"
よくある失敗ケースと対応
Archive時に失敗する場合
上記のframeworks.sh
修正を必ず実施FlutterプロジェクトでPodfile変更後エラー
flutter_additional_ios_build_settings
が不足している場合:rbpost_install do |installer| # ... 既存のコード ... installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end
特定Podでデプロイメントターゲットが変更できない場合
手動で該当Podのバージョンアップ:bashpod update <問題のPod名>
例: Firebase関連エラーの場合
bashpod update FirebaseFirestore FirebaseDatabase
根本原因と予防策
- 本質的原因: Xcode 14.3でのiOS 8-10サポート廃止
Appleが提供するARサポートライブラリlibarclite
がiOS 11以上のみに配布 - 予防策:
- 新しいプロジェクトでは初期デプロイメントターゲットをiOS 12以上に設定
- CocoaPods使用時は定期的に
pod outdated
で依存関係を確認 - 最低でも年1回はXcodeのアップデート計画を立案
代替手段(最後の選択肢)
他全ての方法が失敗した場合、Xcode 14.2にダウングレードすることで一時回避可能:
- Xcode Releasesから14.2をダウンロード
Xcode.app
を置き換え- ターミナルで以下を実行:
sudo xcode-select -s /Applications/Xcode-14.2.app
ダウングレードの注意点
Appleは90日後に旧バージョンの署名を無効化するため、App Store提出には非推奨です。
トラブルシューティング最終チェックリスト
- 全ターゲットのデプロイメントターゲットが11.0以上か確認
pod deintegrate
→pod install
を実施- Xcodeで
Product > Clean Build Folder
を実行 - Flutterプロジェクトなら
flutter clean
- ビルドディレクトリを完全削除(
DerivedData
フォルダ)