問題→解決
iOSアプリ開発をしていて、iOS Simulatorをターゲットにしたらデバイスが一致しないぞ、と言われた。
xcodebuild: error: Unable to find a destination matching the provided destination specifier: { id:XXXX-XXXXX-XX-XXX}
StackOverflowで完璧に解決策が示されていて、これで解決できた。
Runner
→Build Settings
→Supported Platforms
をiOS
にしたら良いらしい。(画像では修正済みだが、元々Debug: iOS
, Profile: iphone
, Release: iphone
となっていてエラーが発生しており、すべてiOSにしたらエラーが発生しなくなった)
そもそもPlatformとしてiphones
という値が不正なのに、なぜか設定で紛れ込んでしまっている、というのが今回の問題でした。
余談・反省
n番煎じだって感じだけど、初めてAppStoreにアプリをアップロードしてよし開発続けるかって時にいきなり出てきたエラーで、初見殺しでエラーコードの情報からは(初心者にとって)どうしようもなかった。まずはエラーコード読めが鉄則だけど読んでみてビルド初期化とかいろいろ試して時間を食ってしまったのが裏目で、検索したら一発だったのに、という感想。
GitHubでIssueが建てられており、理由はわかっていないらしい。
I don't know why this works, but I think I found how to solve it. 1. Open Xcode 2. Click "Runner" (root) 3. Click "Build Settings" 4 Change "Supported Platforms" from iphoneos to iOS Make sure Profile and Release should be iOS, not iphoneos.
なぜこういう設定になったかは分からないが、Xcodeをアップデートしたらこうなったんだよ、という人もいるみたい。
After Xcode update to 15.2 it started happening.
Flavorを適当にいじったからではないかと指摘している人もいる。
**jmagman commented on Jan 19 • edited**
I suspect you have your debug flavor set up incorrectly to use the Profile or Release version of Flutter. Make sure your
xcconfig
Configurations are set up correctly in Xcode (see note in the docs)
自分の例だと、Podfileを手動でいじってMinimum Targetを指定したことが不味かった?かもしれない(コメントアウトをアンコメントした)。
platform :ios, '13.0'
普段VSCodeからいろいろいじっているけど、XcodeからRunnerの設定を変更したほうが無難かもしれない。
環境など
(Flutter doctor -v
)
[✓] Flutter (Channel stable, 3.22.0, on macOS 13.6.7 22G720 darwin-x64, locale en-JP) • Flutter version 3.22.0 on channel stable at /Users/indiakilo/development/flutter_3.22.0 • Upstream repository https://github.com/flutter/flutter.git • Framework revision 5dcb86f68f (10 weeks ago), 2024-05-09 07:39:20 -0500 • Engine revision f6344b75dc • Dart version 3.4.0 • DevTools version 2.34.3 [✓] Xcode - develop for iOS and macOS (Xcode 15.0.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 15A507 • CocoaPods version 1.15.2