FlutterアプリをXcodeでビルドしてArchiveを作成する際にハマったこと
こんにちは、CX事業本部 Delivery部の若槻です。
今回は、FlutterアプリをXcodeでビルドしてArchiveを作成する際にいくつかハマった箇所があったので紹介します。
ビルドしたいアプリ
次のエントリでFlutterを利用して開発したiOSアプリをTestFlightで検証するために、App Store Connectにアップロードしようとしました。
開発はVS Codeで行い、アプリのビルドおよびiOS Simulatorでの実行は問題なく行えていました。
$ flutter devices 5 connected devices: iPhone 14 Pro (mobile) • 303EE434-DF48-40EF-B58C-AF4B6778F1B4 • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator) iPhone 14 Pro Max (mobile) • 2CA618C6-E1DF-42E2-B555-541EE8A289B3 • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator) iPhone 14 Pro Max 2 (mobile) • 2922EF27-FB61-4D23-B640-053CDFE46AC4 • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator) macOS (desktop) • macos • darwin-arm64 • macOS 12.6 21G115 darwin-arm $ flutter run -d 303EE434-DF48-40EF-B58C-AF4B6778F1B4 --dart-define=USERNAME=John $ flutter run -d 2CA618C6-E1DF-42E2-B555-541EE8A289B3 --dart-define=USERNAME=Risa $ flutter run -d 2922EF27-FB61-4D23-B640-053CDFE46AC4 --dart-define=USERNAME=Tanaka
事象1:Archiveボタンが無効になっている
アプリのソースコードをXcodeで開き、Archiveをしようとしたのですが、[Archive]メニューが無効になっており選択できなくなっています。
解決
Runnerで選択されている端末をiOS Simulatorからそれ以外のデバイスに変更します。
すると[Archive]メニューを有効にすることができました。
参考:provisioning - Xcode Product -> Archive disabled - Stack Overflow
事象2:Archiveでビルドエラーになる
アプリのソースコードをXcodeで開く際にRunner.xcodeproj
を選択して開きました。
するとdevice_info_plus
というパッケージが見つからずエラーとなっていました。VS Codeで開発している際はこのようなエラーは出ていませんでした。
Xcodeを少し触っているとエラーは消えました。何なんでしょうね。App Store Connectにアップロードするためにアプリのアーカイブを開始します。この時にソースコードのビルドが行われます。
しかしビルドエラーによりArchive Failとなってしまいました。
解決
ソースコードをXcodeで開く際にRunner.xcworkspace
を選択して開くきます。(先程はRunner.xcodeproj
でした)
すると、Archive実行時にビルドエラーが発生しなくなり、アーカイブを作ることができました。
参考:「Module 'xxx' not found」の対処法まとめ【Flutter】 - Qiita
どういうことなのか
.xcodeprojが単一のプロジェクトを対象にしているのに対して、.xcworkspaceは複数のProjectを束ねることができる。クロスプラットフォームアプリを構築できるFlutterはiOS、Android、Webのそれぞれのソースに対して単一の依存関係を使用するため、.xcworkspaceを使う必要があった、と考えられる。
参考:【Xcode】xcodeprojとxcworkspaceの違いについて本気出して考えてみた - Qiita
参考
以上