Skip to content

Xcode 14.3 における libarclite_iphoneos.a ファイルが見つからない問題の解決方法

問題の説明

FlutterアプリのiOSビルド時に、Xcode 14.3アップデート後に以下のエラーが発生します:

Error (Xcode): File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
Error (Xcode): Linker command failed with exit code 1

この問題は主にFirebase関連プラグイン(firebase_core, firebase_crashlytics など)を含むFlutterプロジェクトで発生します。一般的にpod deintegratepod installなどの通常の解決策では修正されません。

根本原因

Xcode 14.3の更新で、iOSデプロイメントターゲットが11.0未満の依存ライブラリがlibarclite_iphoneos.aを必要とするようになりました。このファイルは新しいXcodeバージョンに含まれていないためリンカエラーが発生します。

主な原因は:

INFO

FlutterプラグインのiOSデプロイメントターゲットバージョンが古い(例:8.0)

効果的な解決方法

推奨ソリューション:Flutterのアップグレード(公式対応)

Flutter 3.7.11以降で公式修正が提供されています:

bash
flutter upgrade        # Flutterアップグレード
flutter clean          # ビルドキャッシュ削除
flutter pub get        # 依存関係再取得

以下を実行してiOSディレクトリをリセット:

bash
cd ios
pod deintegrate
rm Podfile.lock
rm -rf Pods
pod repo update
pod install

WARNING

Apple Silicon(M1/M2チップ)ユーザーは追加処置が必要

bash
sudo gem uninstall ffi
sudo gem install ffi -- --enable-libffi-alloc

代替解決策:Podfileの変更(即時対応)

すぐにFlutterをアップグレードできない場合は、Podfileを修正:

  1. ios/Podfileを開き、先頭行を変更:

    diff
    - # platform :ios, '12.0'
    + platform :ios, '14.0'  # 最小13.0以上
  2. post_installブロックを置き換え:

    ruby
    post_install do |installer|
      installer.generated_projects.each do |project|
        project.targets.each do |target|
          target.build_configurations.each do |config|
            # デプロイメントターゲットが13.0未満の場合に13.0に設定
            if Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']) < Gem::Version.new('13.0')
              config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
            end
          end
        end
      end
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
      end
    end
  3. 変更を適用:

    bash
    cd ios
    pod install

TIP

設定値の調整ポイント

  • 現行プロジェクトの対象iOSバージョンに合わせて13.0の値を変更可能
  • Firebaseプラグインでは少なくとも10.0以上が必要

補助手段:特定Podの手動設定(デバッグ用)

特定のPodだけに問題がある場合、Xcodeで直接設定可能:

  1. ios/Runner.xcworkspaceを開く
  2. Podsディレクトリでターゲットを選択
  3. Build Settings > Deployment > iOS Deployment Target
  4. エラー表示されるPod(例:FMDB)のターゲットを11.0以上に変更 iOS Deployment Target設定画面

:::caution 注意 この方法は一時的解決策です。flutter clean実行時にリセットされる可能性あり :::

CocoaPodsスクリプト修正方法

エラー発生時に提案される別の対処法(上記方法で解決しない場合):

  1. ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh 開く
  2. 44行目付近を修正:
    diff
    if [ -L "${source}" ]; then
    -  source="$(readlink "${source}")"
    +  source="$(readlink -f "${source}")"
    fi

対応別メリット/デメリット

解決方法持続性作業量推奨度
Flutterアップグレード★★★高(公式対応)
Podfile修正★★
手動設定
スクリプト変更

予防とベストプラクティス

  1. 依存ライブラリの定期的更新:

    bash
    flutter pub outdated
    flutter pub upgrade
  2. デプロイメントターゲットの適正化:

    • ios/Podfileに明示的なプラットフォームバージョン指定を推奨
    • 新規プロジェクトではデフォルトを13.0以上に設定
ruby
# 新規プロジェクト推奨設定例
platform :ios, '13.0'

:::success 成功のポイント マルチプラットフォーム開発の安定化戦略:

  • クロスプラットフォームチームのXcodeバージョン統一
  • CI/CD環境のXcodeバージョンを固定
  • Flutter安定版チャネル使用+アップグレードは公式アナウンス確認後 :::

まとめ

libarclite_iphoneos.aエラーの主原因は古いiOSデプロイメントターゲット設定です。Flutter 3.7.11以降へのアップグレードが最適解ですが、即時対応ではPodfileの修正が効果的です。デプロイメントターゲットを13.0以上に保つことで、Xcode 14.3+環境での安定ビルドが可能になります。

緊急対応が必要な場合

リリース期限が差し迫っている場合は、一時的にXcode 14.2を併用:

bash
gem install xcode-install
xcversion install 14.2
xcversion select 14.2

公式GitHub Issueトラッカーで最新情報を確認ください。