2.

Xcode Could not locate device support filesの原因と対処

編集
この記事の要点
  • iPhone の iOS バージョンが、使っている Xcode の対応 iOSより新しいときに発生
  • Xcode はビルド時に対応 iOS の DeviceSupport フォルダを必要とする。新 iOS の DeviceSupport が無いとこのエラーになる
  • 対処の本筋は Xcode を最新にアップデートすること(App Store / Apple Developer サイト)
  • 緊急回避策として、GitHub の iOSDeviceSupport 系リポジトリから該当バージョンを取得し DeviceSupport 配下に配置
  • 配置先: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

エラーメッセージ

Could not locate device support files

This iPhone 8 (Model A1863, A1905, A1906, A1907) is running iOS 12.3.1 (16F203),
which may not be supported by this version of Xcode.

Xcode から実機の iPhone / iPad / iPod touch を使ってデバッグ実行しようとしたときに表示されるエラーです。デバイス選択ピッカーで該当端末が「iOS xx.x.x is not supported by this version of Xcode」と表示されてビルドできない状態になります。

原因

Xcode はビルド時に、対象 iOS バージョンのシンボル情報やランタイム情報を含む DeviceSupport フォルダを参照します。例えば iOS 12.3.1 の端末で実行するためには、Xcode 内に「12.3.1」用の DeviceSupport が用意されている必要があります。

このフォルダは Xcode のバージョンごとに同梱されており、古い Xcode は新しい iOS の DeviceSupport を持たないため、本エラーが発生します。

典型的なシチュエーション
iPhone を最新 iOS にアップデートしたが、開発機の Xcode は古いまま
会社支給 Mac で macOS が古く、最新 Xcode をインストールできない
iOS のベータ版を入れた端末で実機デバッグしようとしている

対処法 1(推奨)─ Xcode をアップデート

もっとも安全で根本的な解決法です。

  1. Mac App Store を開き、Xcode をアップデート
  2. App Store にまだ最新版が来ていない場合は Apple Developer のダウンロードページ から手動取得
  3. Xcode を起動して同梱の追加コンポーネントのインストールを完了
  4. 端末を再接続してビルド

macOS のバージョンが要件に満たず最新 Xcode を入れられない場合は、まず macOS のアップデートを検討してください。

対処法 2 ─ DeviceSupport フォルダを手動追加

すぐに Xcode をアップデートできない緊急時の回避策です。GitHub には iOS 各バージョン用の DeviceSupport フォルダを集めた有志リポジトリがあります。

手順

  1. GitHub で iOSDeviceSupportiPhoneOSDeviceSupport を検索し、対応する iOS バージョンの ZIP / フォルダを入手
  2. ダウンロードした ZIP を解凍。フォルダ名は 12.3 (16F203) のような形式
  3. Xcode を一旦終了する
  4. Finder で Cmd+Shift+G を押し、次のパスへ移動
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
  1. 取得したバージョンフォルダ(例: 12.3 (16F203))をこのパス配下にコピー
  2. Xcode を起動し直し、端末を接続してビルド

対処法 3 ─ Deployment Target を下げる

プロジェクトの iOS Deployment Target が端末よりはるかに古い場合、Xcode が一致するシンボルを見つけられないことがあります。プロジェクトの General タブの Deployment Info で、端末の iOS バージョン以下、かつ現実的な範囲(例: iOS 12.0)に設定し直します。

対処法 4 ─ ベータ iOS なら Beta SDK

端末に iOS のベータ版を入れている場合は、対応する Xcode Beta を Apple Developer サイトから入手してください。安定版 Xcode はベータ iOS の DeviceSupport を持ちません。

注意点

注意説明
非公式リポジトリのリスク有志リポジトリの DeviceSupport はApple 公式配布物ではない。社内ルールやセキュリティ要件を確認してから利用すること
App Store 配布ビルドへの影響DeviceSupport の差し込みは開発時のシンボル参照のみ。リリースビルド自体には影響しないが、CI ビルドサーバでは事故になりやすいので個人 Mac のみ推奨
Xcode 再インストール時Xcode を入れ直すと差し込んだ DeviceSupport は消える。再度コピーが必要

DeviceSupport の確認方法

現在の Xcode が対応している iOS バージョンは、Finder で次のパス配下のフォルダ名を見ると一目で分かります。

# DeviceSupport フォルダ一覧をターミナルで確認
ls "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/"

# 例: 出力
# 14.0
# 14.1
# 14.2 (18B92)
# 14.3
# Latest

ここに iPhone 側の iOS バージョン(例: 16.5.1)に対応するフォルダがなければ、本エラーが発生します。

シンボリックリンクで一時的にしのぐ

厳密に同じバージョンの DeviceSupport が手に入らない場合、近いバージョンへのシンボリックリンクを張ることで一時的に動かせるケースがあります(自己責任)。

cd "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport"

# 既存の 16.4 を 16.5.1 として認識させる
sudo ln -s "16.4" "16.5.1"

# Xcode を再起動

これで Xcode は 16.4 用のシンボル情報を 16.5.1 として読み込みます。API 差分があるためビルドは通っても動作不良の可能性があり、あくまで応急処置です。最終的には Xcode 本体のアップデートが必須です。

iOS 17 以降 ─ Developer Mode の有効化

iOS 16 以降の端末で実機デバッグするには、本エラーとは別に端末側で Developer Mode を有効化する必要があります。

  1. iPhone を Mac に一度繋ぎ、Xcode からビルドを試行
  2. iPhone の 設定 → プライバシーとセキュリティ → デベロッパモードが出現する
  3. これを ON にして端末を再起動

「Developer Mode 項目が出てこない」ときは、一度 Xcode からビルドを試みると現れます。

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. A build only device cannot be used to run this target
  2. Could not locate device support files
  3. ...のiPhone is busy: Preparing debugger support for ...のiPhone

最近更新/作成されたページ