Flutter - Construction pour iOS, mais le cadre lié et intégré 'App.framework' a été construit pour iOS Simulator

13

Après la mise à jour vers Catalina 10.15.4 beta avec Xcode 13.4 beta, qui a également mis à jour Simulator vers 13.4 (921.4).

L'application se compile et s'exécute correctement sur un périphérique physiquement connecté, mais aucun simulateur d'aucun périphérique ne peut passer cette étape.

J'ai les erreurs

Compilation pour iOS, mais le cadre lié et intégré «App.framework» a été conçu pour iOS Simulator.

ou

Construire pour iOS Simulator, mais le cadre lié et intégré 'App.framework' a été construit pour iOS.

entrez la description de l'image ici

Comment puis-je réparer cela?

gordonturibamwe
la source

Réponses:

42

Xcode 11.4 a changé la façon dont les frameworks sont liés et intégrés, et vous pouvez rencontrer des problèmes pour basculer entre les appareils iOS et les simulateurs. Flutter v1.15.3 et versions ultérieures migreront automatiquement votre projet Xcode.

Pour vous décoller, suivez les instructions ci-dessous;

  • Solution rapide (faites fonctionner votre simulateur)

rm -rf ios/Flutter/App.framework

  • Étapes officielles recommandées pour migrer manuellement

    1. Dans le répertoire de l'application Flutter, ouvrez ios / Runner.xcworkspace dans Xcode.
    2. Dans le volet Navigateur, recherchez le groupe Flutter et supprimez App.framework et Flutter.framework. entrez la description de l'image ici
    3. Dans les paramètres de génération de cible Runner Build Phases> Link Binary With Libraries, confirmez que App.framework et Flutter.framework ne sont plus présents. Confirmez également dans Build Phases> Embed Frameworks.

entrez la description de l'image ici

  1. Modifiez les paramètres de génération de cible Runner Build Phases> Thin Binary script comme suit:

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh" embed

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh" mince

entrez la description de l'image ici

  1. Dans la cible Runner Build Settings> Other Linker Flags

    (OTHER_LDFLAGS) ajoutez $ (hérité) -Framework Flutter

entrez la description de l'image ici

J'espère que cela aide!

Loïc Fonkam
la source
La question a été récemment clôturée et a reçu beaucoup de votes négatifs parce qu'elle n'est pas claire et a été publiée sur Meta . Il semble que vous compreniez ce qu'il demande, avez-vous une idée de la façon de le modifier pour qu'il ne soit pas si clair?
CertainPerformance
1
Fonctionne comme un charme!
Giedrius Šlikas
3

Xcode 11.4 a changé la façon dont les frameworks sont liés et intégrés, ce qui entraîne des problèmes de commutation entre les appareils iOS et les simulateurs.

Veuillez suivre le guide officiel sur la façon de migrer votre projet.

Viktor K
la source
Après avoir suivi le guide officiel, mon application ne s'est toujours pas chargée sur mon appareil physique. Ce n'est qu'après avoir suivi le guide, exécuté flutter cleanplusieurs fois, supprimé le Pods/dossier Podfile.lock, puis réinstallé à l'aide pod installdu dossier ios que cela a finalement fonctionné.
Matthew Lerner
2

Mis à jour vers Xcode 11.4. Ios 13.4, Iphone X. App récupère simplement les données à l'aide de l'API. L'application a démarré sur écran blanc, puis se bloque finalement, à la fois sur le simulateur et sur l'appareil.

J'ai suivi le guide officiel (moi aussi rm -rf ios/Flutter/App.framework) flutter.dev/docs/development/ios-project-migration . J'ai couru plusieurs foisflutter clean

J'ai également essayé de supprimer Pods / dossier et Podfile.lock, puis de réinstaller à l'aide de pod installdans le dossier ios.

Comme j'utilise des données asynchrones, j'ai également ajouté la première ligne dans main ()

WidgetsFlutterBinding.ensureInitialized();

Aucune aide, l'application n'a pas démarré de simulateur.

Ensuite, j'ai supprimé ios/et les android/dossiers. Après cela, dans le dossier du projet, j'ai exécuté la commande flutter create .qui régénère les dossiers mentionnés.

Après cela, mon application a bien commencé à la fois sur le simulateur et sur l'appareil. J'espère que cela aiderait les autres. REMARQUE!! si vous avez apporté des modifications manuellement à ces dossiers, veuillez effectuer une sauvegarde ou valider au préalable.

user12657834
la source
1

Après plusieurs jours à essayer de trouver une solution pour tester l'application Flutter sur un appareil iOS, j'ai finalement trouvé ceci:

flutter clean
flutter build ios

-Ouvrez xCode et exécutez l'application sur votre appareil.

gordonturibamwe
la source
Ça ne marche toujours pas pour moi. fait la même chose quand j'essaye de courir leflutter build ios
Raymond Ativie
3
Suivez ce lien: flutter.dev/docs/development/ios-project-migration
gordonturibamwe
oui c'est ce que j'ai fini par faire merci
Raymond Ativie
0

J'ai essayé la solution sur le site officiel de flutter mais cela n'a pas fonctionné pour moi, j'ai donc trouvé une solution temporaire qui a fonctionné pour moi, mais cela m'a pris du temps: voici mon exemple avec le projet stuck_framework qui est un nouveau nouveau projet (première exécution sur le simulateur)

  1. J'ai créé 2 dossiers dans le projet flutter appelé
    "ios_simulator" et "ios_real_device". entrez la description de l'image ici

  2. Maintenant, ma première version était pour le simulateur, alors je veux passer à un véritable appareil, je déplacerai le dossier ios dans le projet Flutter vers le "ios_simulator"

  3. J'ouvre le projet avec du code Visual Studio et lance "flutter create". et maintenant je vais choisir un vrai appareil pour reconstruire le projet (si votre simulateur est en ligne, veuillez quitter). entrez la description de l'image ici
  4. Maintenant, j'attends la fin de la construction et je tourne sur le vrai appareil sans aucune erreur. Maintenant, j'ai 2 projets ios 1 pour les simulateurs et un pour les vrais appareils.
  5. La prochaine fois que je veux exécuter à nouveau le simulateur, je supprime simplement le dossier ios actuel et je recopie le dossier ios que j'ai placé sur "ios_simulator" dans le dossier du projet flutter. J'espère que cette aide
Phil Tran
la source
0

La mise à niveau manuelle de flutter vers la version 1.15 résout également ce problème. La course flutter version v1.15.17m'a aidé.

En outre, vous pouvez basculer vers betaou devcanaux en exécutant la flutter channelcommande, mais assurez-vous de vérifier votre code par rapport à toutes les modifications BC ...

Johnny Vietnam
la source
0

Dans mon cas, cela ne fonctionne que sur simulateur (débogage). Si vous souhaitez déployer votre application sur l'App Store (version), je vous recommande vivement de mettre à niveau la version Flutter à l'aide de

flutter version v1.15.17

sinon, vous rencontreriez une application bloquée avec un écran blanc.

il suffit de mettre à niveau la version flutter alors tout fonctionne bien

KIM
la source
1.15.17n'est pas encore sur la chaîne stable.
Loolooii