Flutter-iOS向けのビルドですが、リンクおよび埋め込みフレームワーク「App.framework」はiOSシミュレーター用にビルドされています


13

Xcode 13.4ベータでCatalina 10.15.4ベータに更新した後、シミュレータも13.4(921.4)に更新しました。

アプリケーションは、物理的に接続されたデバイスで正しくコンパイルおよび実行されますが、どのデバイスのシミュレーターもこのステージを通過できません。

エラーが発生しました

iOS用のビルドですが、リンクされた埋め込みフレームワーク「App.framework」は、iOSシミュレータ用にビルドされました。

または

iOSシミュレータ用のビルドですが、リンクされて埋め込まれたフレームワーク「App.framework」はiOS用にビルドされています。

ここに画像の説明を入力してください

どうすれば修正できますか?

回答:


42

Xcode 11.4では、フレームワークのリンクと埋め込みの方法が変更されたため、iOSデバイスとシミュレーターの切り替えで問題が発生する場合があります。Flutter v1.15.3以降では、Xcodeプロジェクトが自動的に移行されます。

行き詰まらないようにするには、以下の手順に従ってください。

  • クイックフィックス(シミュレータを機能させる)

rm -rf ios/Flutter/App.framework

  • 手動で移行するための公式の推奨手順

    1. Flutterアプリディレクトリから、Xcodeでios / Runner.xcworkspaceを開きます。
    2. ナビゲーターペインでFlutterグループを見つけ、App.frameworkとFlutter.frameworkを削除します。 ここに画像の説明を入力してください
    3. ランナーのターゲットビルド設定で、[ビルドフェーズ]> [ライブラリとバイナリをリンク]で、App.frameworkとFlutter.frameworkが存在しないことを確認します。ビルドフェーズ>埋め込みフレームワークでも確認してください。

ここに画像の説明を入力してください

  1. 次のように、Runnerターゲットのビルド設定[ビルドフェーズ]> [シンバイナリスクリプト]を変更します。

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh"埋め込み

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh"シン

ここに画像の説明を入力してください

  1. ランナーターゲットビルド設定>その他のリンカーフラグ

    (OTHER_LDFLAGS)$(inherited)-framework Flutterを追加

ここに画像の説明を入力してください

それが役に立てば幸い!


質問は最近終了し、不明確でMetaに投稿されたため、多くの反対投票を受けました。あなたはそれが何を求めているのか理解しているようです、あなたはそれを形に編集する方法のアイデアを持っていますか?
特定のパフォーマンス

1
魅力的な作品!
GiedriusŠlikas

3

Xcode 11.4では、フレームワークのリンクと埋め込みの方法が変更されたため、iOSデバイスとシミュレーターの切り替えで問題が発生しています。

プロジェクトの移行方法については、公式ガイドに従ってください。


公式ガイドに従っても、私のアプリが物理デバイスにまだ読み込まれませんでした。ガイドに従って、flutter clean数回実行し、Pods/フォルダーを削除Podfile.lockpod installてから、iosフォルダーにを使用して再インストールした後でのみ、最終的に機能しました。
マシューラーナー

2

Xcode 11.4に更新しました。iOS 13.4、IphoneX。アプリはAPIを使用してデータをフェッチするだけです。アプリが白い画面で起動し、シミュレータとデバイスの両方で最後にクラッシュしました。

私は公式ガイド(私もrm -rf ios/Flutter/App.frameworkflutter.dev/docs/development/ios-project-migrationに従いました。何度か走ったflutter clean

また、Pods /フォルダーとPodfile.lockを削除しpod installてから、iosフォルダーでを再インストールしてみました。

非同期データを使用しているので、main()の1行目としても追加しました

WidgetsFlutterBinding.ensureInitialized();

いいえ、アプリはどちらのシミュレータも起動しませんでした。

次にios/android/フォルダとフォルダを削除しました。その後、プロジェクトフォルダーで、flutter create .言及されたフォルダーを再生成するコマンドを実行しました。

この後、私のアプリはシミュレータとデバイスの両方で問題なく起動しました。これが他の人の役に立つことを願っています。注意!!これらのフォルダを手動で変更した場合は、事前にバックアップを取るかコミットしてください。


1

数日後にiOSデバイスでFlutterアプリをテストするためのソリューションを見つけようとしたところ、ようやくこれが見つかりました。

flutter clean
flutter build ios

-xCodeを開き、デバイスでアプリを実行します。


まだうまくいきません。私が実行しようとしたときに同じことをしますflutter build ios
レイモンドアティヴィエ

3
このリンクをたどってください:flutter.dev/docs/development/ios-project-migration
gordonturibamwe

はい、
それで

0

私はフラッターの公式ウェブサイトで解決策を試しましたが、それは私にとってはうまくいきませんでしたので、私にとっては一時的な解決策が見つかりましたが、それは私にいくつかのハードワークを要しました:これは新鮮なプロジェクトstuck_frameworkの私の例です新しいプロジェクト(シミュレーターでの初回実行)


  1. 「ios_simulator」と「ios_real_device」というflutterプロジェクト内に2つのフォルダーを作成しました。 ここに画像の説明を入力してください

  2. 最初のビルドはシミュレーター用でした。次に、実際のデバイスに切り替えたいので、Flutterプロジェクト内のiosフォルダーを「ios_simulator」に移動します

  3. ビジュアルスタジオコードでプロジェクトを開き、「flutter create」を実行します。次に、実際のデバイスを選択してプロジェクトを再構築します(シミュレータがオンラインの場合は、終了してください)。 ここに画像の説明を入力してください
  4. ビルドが完了するのを待って、実際のデバイスでエラーなしで実行します。現在、シミュレータ用の2つのiOSプロジェクトと実際のデバイス用の2つのiOSプロジェクトがあります。
  5. 次回シミュレータで実行したいときは、現在のiosフォルダを削除し、「ios_simulator」に配置したiosフォルダをflutterプロジェクトフォルダにコピーします。この助けを願っています

0

手動でフラッターをバージョン1.15にアップグレードすると、この問題も解決します。ランニングflutter version v1.15.17は私を助けました。

また、コマンドを実行して、betaまたはdevチャネルに切り替えることができますが、flutter channelすべてのBCの変更に対してコードを確認してください...


0

私の場合、それはシミュレーター(デバッグ)だけで動作します。アプリをアプリストア(リリース)に展開する場合は、次を使用してフラッターバージョンをアップグレードすることを強くお勧めします

flutter version v1.15.17

そうしないと、白い画面でアプリがクラッシュする可能性があります。

フラッターのバージョンをアップグレードするだけで、すべてがうまく機能します


1.15.17まだStableチャンネルにありません。
Loolooii
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.