Flutter: iOSシミュレーターでReleaseビルドしたら「No such module 'Flutter'」のエラー(実機では問題なし)

結論:iOSシミュレーターはDebugモードでビルドする(仕方なく...)

2023/1/3 Flutter エラー・バグ日記

 

Xcodeの「Edit Scheme」をReleaseビルドに設定した状態で、iOSシミュレーターでビルドしたところ、下図のようなエラーになった。

 

 

実機では発生しないが、iOSシミュレーターでビルドすると発生する。

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

最初は、「No such module 'Flutter'」だったが、その後、後述する様々な試行錯誤をしたときには、Module 'XXXX' not found」のエラーに変わった(「XXXX」は特定のパッケージ名)。

 

とにかく、必要なモジュールが見つからない、ということらしい。

 

実行環境は、以下のとおり。

 

  • MacBook Pro(Intelプロセッサ)
  • macOS Monterey 12.6
  • Xcode 14.0
  • Flutter 3.3.4 channel stable

 

定番の対応は効果なし

まずは、Xcodeのビルドエラーで試す下記定番の対応

 

  • flutter clean → pub get → pod install
  • Podfile.lock削除 → flutter clean → pub get → pod install --repo-update
  • Podfile冒頭の「platform :ios, '番号'」の行のコメントアウト(#)を外し、番号を上げる('14'など)

 

をやってみるも、エラーは変わらず。

 

No such module 'Flutter'」で調べてヒットした下記スレッドにおいても、上記定番の対応が回答されているが、自分のケースでは解消できなかった。。

 

 

「Runner.xcworkspace」を開くも、変わらず

続けて調べた下記の記事

 

 

には、「Runner.xcodeproj」ではなく、「Runner.xcworkspace」を開くとモジュールが読み込まれる、との情報があったので、試してみるも、エラーは変わらなかった。

 

「Flutter.xcframework」を作る方法も効果なし

下記記事では、「Flutter.xcframework」が存在していないことが原因であり、これを生成してXcodeの「Build Setting」→「Framework Search Paths」に紐付けると解消した、と報告されていた。

 

 

こちらのFlutter公式サイトにも説明があるが、「FlutterモジュールをiOSプロジェクトに統合する」という作業らしい。

 

やや大掛かりなので憚られたが、思い切って試したところ、結局エラーは変わらなかった。

 

ただ、エラーメッセージは、Module 'XXXX' not found」に変わり、使用している特定のパッケージ名が表示されるようになった。

 

※なお、Releaseビルドを使っていたので、「Flutter.xcframework」作成のコマンドは、上記記事に書かれている

 

flutter build ios-framework --no-debug --no-profile --release --output=Flutter

 

の方を採用した。

 

Debugモードでビルドすると解消する

前述の記事内容を見て、ビルドのモードが原因かもしれないと気づいた。

 

こちらの日記に記載した経緯から、Xcodeの「Product」→「Scheme」→「Edit Scheme」で、ビルドモードを「Debug」から「Release」に変更していた。

 

そこで、Debugビルドに戻してみたところ、エラーが解消され、ビルドできるようになった。

 

再度、Releaseモードでビルドすると、別のエラーが発生

リリース時の挙動を確認するには、Releaseモードでもビルドできた方が良いため、改めてReleaseモードでビルドしてみると、今度は「Build Succeeded」が表示され、ビルドが成功した。

 

どうやら、一旦Debugモードでビルドしておけば、Releaseモードでもビルドは成功するらしい。

 

しかし、アプリが起動する前に、

 

iPhone 14 Pro cannot run Runner.
Runner's architectures (arm64) include none that iPhone 14 Pro can execute (Intel 64-bit).

 

 

というダイアログが表示されてしまい、結局アプリを起動できなかった。

 

アーキテクチャーであるarm64に関連した問題らしい。。Intel製のMacを使っているためだろうか。。

 

Xcodeの「Excluded Architectures」に「arm64」を追記するも解消せず

「arm64」関連で調べていくと、以下の記事群が見つかった。

 

 

 

 

 

 

いずれの記事でも、概ね以下の対応で解消すると報告されていた。

 

  • ① 導入ライブラリ(パッケージ)を最新に更新する
  • ② Xcodeの「Excluded Architectures」に「arm64」を追加する(後述の図参照)
  • ③ Xcodeの「User-Defined」から「VALID_ARCHS」を削除する(後述の図参照)
  • ④ Podfileに、iOSシミュレータのarm64を除外する設定を追記する

 

結論としては、残念ながら、上記①〜④いずれをやってもエラーは解消しなかった。

 

①は、最新版に更新してもエラーは変わらず。

 

②は、下図のとおり「arm64」を加えてみたが、

 

 

今度は、

 

error build: Command PhaseScriptExecution failed with a nonzero exit code

 

というエラーが出て、ビルドできず。。

 

③は、そもそも下図のとおり、「User-Defined」に「VALID_ARCHS」が無く、削除できず。。

 

 

④は、上記参考記事に沿って設定を追記するも、上記②と同じエラーになった。

 

iOSシミュレーターは、Debugモードでビルドすることに...

上記の他にも、Xcode内で、気になる箇所の設定を様々変更してみるも、エラーは解消できず。。

 

各記事を見ていると、どうやらAppleシリコンのMac登場により、iOSシミュレーターの仕様(使用するアーキテクチャー?)が変わったことが影響している模様。。

 

かなり時間を費やしてしまったが、、iOSシミュレーターは、実機の場合と異なり、Xcodeとの接続を切っても、Debugビルドでインストールしたアプリを起動できるため、Debugビルドを使用することで我慢することにする。

 

\一般的なエラー対処法をまとめた記事はこちら/

 

リリースしたアプリ(全てFlutterで開発)

暗記用マーカー - シンプル穴埋め問題作成

Google Play で手に入れよう
Download on the App Store

 

超即ToDo –最短2タップで通知登録できるタスク管理アプリ

Google Play で手に入れよう
Download on the App Store

 

かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載

Google Play で手に入れよう
Download on the App Store

 

シンプルメモ帳「BasicMemo」 - 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載

Macのデスクトップ版もリリースしました。

Google Play で手に入れよう
Download on the App Store

 

個人アプリ開発で役立ったもの

おすすめの学習教材

 \キャンペーン時を狙えば安価で本場の内容が学べる/

 

超初心者向けでオススメな元Udemyの講座/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 - Dartの要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存...何でもできて超必須

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

タイトルとURLをコピーしました