Skip to content

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スクリプトで一括更新

  1. Podfileを開き、末尾に以下を追加:
rb
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以上のターゲットが設定されているライブラリは変更されません

  1. ターミナルで以下を実行:
bash
pod deintegrate
pod clean
pod install

方法2: Xcode UIで手動更新

  1. Xcodeでプロジェクトを開く
  2. ナビゲーターサイドバーで Pods プロジェクトを選択
  3. ターゲット(Podごと)をクリック
  4. Build SettingsiOS Deployment Target を検索
  5. 値が 11.0未満 のものをすべて 11.0以上 に変更
    • ドロップダウンから選択(手入力不可)

Xcodeのデプロイメントターゲット設定画面

方法3: Flutterプロジェクトの場合

bash
flutter upgrade  # バージョン3.7.11以上にアップグレード
flutter clean

WARNING

Flutter 3.7.11以前のバージョンでは本問題が発生するため、必ずアップグレードしてください。

補助的解決策: 不足ファイルの手動追加

一時的な対処法

この方法は非推奨です。根本解決にはデプロイメントターゲットの更新を行ってください。

  1. ターミナルで以下を実行:
bash
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 *
  1. スクリプトファイルを修正:
    • Pods/Target Support Files/Pods-<プロジェクト名>/Pods-<プロジェクト名>-frameworks.sh を開く
    • 以下の行を検索:
      sh
      source="$(readlink "${source}")"
    • 以下のように修正:
      sh
      source="$(readlink -f "${source}")"

よくある失敗ケースと対応

  1. Archive時に失敗する場合
    上記のframeworks.sh修正を必ず実施

  2. FlutterプロジェクトでPodfile変更後エラー
    flutter_additional_ios_build_settingsが不足している場合:

    rb
    post_install do |installer|
      # ... 既存のコード ...
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
      end
    end
  3. 特定Podでデプロイメントターゲットが変更できない場合
    手動で該当Podのバージョンアップ:

    bash
    pod update <問題のPod>

    例: Firebase関連エラーの場合

    bash
    pod update FirebaseFirestore FirebaseDatabase

根本原因と予防策

  • 本質的原因: Xcode 14.3でのiOS 8-10サポート廃止
    Appleが提供するARサポートライブラリlibarcliteがiOS 11以上のみに配布
  • 予防策:
    • 新しいプロジェクトでは初期デプロイメントターゲットをiOS 12以上に設定
    • CocoaPods使用時は定期的にpod outdatedで依存関係を確認
    • 最低でも年1回はXcodeのアップデート計画を立案

代替手段(最後の選択肢)

他全ての方法が失敗した場合、Xcode 14.2にダウングレードすることで一時回避可能:

  1. Xcode Releasesから14.2をダウンロード
  2. Xcode.appを置き換え
  3. ターミナルで以下を実行:
bash
sudo xcode-select -s /Applications/Xcode-14.2.app

ダウングレードの注意点

Appleは90日後に旧バージョンの署名を無効化するため、App Store提出には非推奨です。

トラブルシューティング最終チェックリスト

  1. 全ターゲットのデプロイメントターゲットが11.0以上か確認
  2. pod deintegratepod install を実施
  3. XcodeでProduct > Clean Build Folderを実行
  4. Flutterプロジェクトならflutter clean
  5. ビルドディレクトリを完全削除(DerivedDataフォルダ)