Signature Flutter invalide lors d'un essai sur un appareil iOS

11

TL; DR

Voir la réponse ci-dessous: https://stackoverflow.com/a/60013390/1121497

Il semble que ce soit un problème avec iOS 13.3 car je viens d'installer 13.4 et maintenant Flutter fonctionne sur mon iPhone. :)


J'essaie d'exécuter une nouvelle application Flutter (l'exemple d'application créé par flutter create) sur un appareil iOS (un iPhone XS). Xcode parvient à l'installer, mais il se bloque avec ce message:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

Si j'essaie flutter run, l'application s'ouvre également et se bloque. Et la commande attend toujours:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

Dans Xcode, j'ai configuré une équipe (équipe personnelle) et le certificat de signature (certificat de développement Apple) semble correct car je peux installer un projet Hello world Swift sur mon appareil.

Remarque: je ne paie pas de compte du programme pour développeurs Apple . Est-ce absolument nécessaire pour exécuter les applications Flutter sur les appareils iOS?

J'ai suivi les instructions macOS et flutter doctordit que j'ai tout ce dont j'ai besoin pour iOS:

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

Comme vous pouvez le voir, j'ai utilisé le canal stable pour éliminer les problèmes avec le canal bêta, mais je travaille généralement dans le canal bêta pour créer un flottement pour le Web (ce qui fonctionne bien).

Dans le simulateur iOS, l'application fonctionne également très bien.

Récemment, j'ai remarqué que je n'ai pas le fichier ios/Podfile. J'ai trouvé ce post en parlant de ça. Je ne sais pas si c'est important ou non dans mon cas, mais j'ai essayé d'ajouter manuellement ce Podfile . Quoi qu'il en soit, j'obtiens la même erreur de signature.

Frustré par cela, je suis passé à NativeScript pour l'instant.

Ferran Maylinch
la source
Vous essayez de l'exécuter sur un appareil réel en mode débogage ou libération?
Sunkuu7
@SlahLayouni C'était en mode débogage. J'ai essayé le mode Release et il échoue avec la même erreur.
Ferran Maylinch
Essayez d'abord la version de build, puis exécutez-la à partir de xcode comme version. flutter build ios --release
Sunkuu7
1) Avez-vous essayé le simulateur iOS 2) Avez-vous déployé / exécuté un "Hello World" dans Swift / Xcode sur votre appareil iPhone? Le certificat personnel devrait être bon pour le déploiement sur votre téléphone.
Morrison Chang

Réponses:

8

EDIT: Ceci est corrigé sur iOS 13.4, qui a été publié le 24 mars.

Il s'agit d'une régression iOS 13.3.1 sans rapport avec Flutter. J'ai pu reproduire le crash sans aucun code Flutter ou CocoaPods en créant un nouveau projet Xcode, en ajoutant une cible de framework et en choisissant un profil de provisioning Personal Team.

Voir le problème GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

Le bogue ne devrait pas avoir d'incidence sur les profils d'approvisionnement des équipes du compte développeur ni sur les applications déjà signées et distribuées sur l'App Store.

Malheureusement, la seule solution de contournement peut être d'éviter la mise à niveau des périphériques de développement vers 13.3.1 jusqu'à ce que cela soit résolu.

Jenn
la source
Merci beaucoup! J'espère que c'est corrigé dès que possible!
Ferran Maylinch, le
C'est donc sur la question du niveau iOS? Je rencontre également ce problème sur iPhone avec la version iOS 13.3.1
Adromil Balais
Oui, il s'agit d'un problème avec iOS 13.3.1 et les versions ultérieures rejetant les cadres signés du profil de provisionnement Personal Team. Ce n'est pas spécifique à Flutter. Les liens dans le commentaire GitHub font référence à d'autres projets, et j'ai pu facilement reproduire avec un tout nouveau framework dans Xcode sans intégrer Flutter.
Jenn
Je viens d'essayer maintenant avec iOS 13.4 et ça marche! Je pouvais exécuter mon application Flutter sur un véritable iPhone à partir de Xcode et également à partir d'IntelliJ IDEA. Je suppose que cela fonctionnera également à partir de la ligne de commande.
Ferran Maylinch
4

Pour autant que je puisse voir, c'est un problème de compatibilité Flutter avec iOS 13.3.1. Dans mon cas, mon application fonctionne parfaitement sur iPhone XR avec iOS 13.3 mais se bloque au lancement sur un autre iPhone XR avec iOS 13.3.1. Impossible de tester dans le simulateur, car il s'agit d'une application d'appareil photo, mais cela fonctionne à la fois sur les appareils Android physiques et les émulateurs Android.

Débutant
la source
Tu as raison. Je viens de tester avec mon iPad avec 13.3. Mon téléphone ne fonctionne pas avec 13.3.1. Je vais mettre à jour la version bêta 2 et essayer :-)
Ken Hui
13.3.1 La version bêta publique 2 rencontre le même problème.
Ken Hui
3
  1. Avez-vous accepté le contrat de licence xcode? sinon, essayez sudo xcodebuild -license.
  2. Vos pods sont-ils mis à jour? sinon, accédez à ios dossier dans le projet de flottement dans votre terminal et tapez pod installensuitepod update

Si cela ne fonctionne pas, accédez au dossier ios de votre projet flutter et ouvrez Runner.xcworkspace en appuyant deux fois dessus. Ça devrait ressembler à ça:

entrez la description de l'image ici

Lorsque xcode s'ouvre, cliquez sur Runner en haut à gauche.

entrez la description de l'image ici

Ensuite, allez dans Signature et capacités et sous la liste déroulante "Équipe", sélectionnez un champ. S'il n'en existe pas, créez un compte.

entrez la description de l'image ici

Ensuite, dans "Bundle Identifier", le nom du bundle de votre application doit s'afficher. Ajoutez .app à la fin. Par exemple, si son "com.example.yourapp" en fait "com.example.yourapp.app" et appuyez sur Entrée.

Appuyez sur le bouton de lecture en haut à gauche pour exécuter l'application sur l'appareil sélectionné.

Yudhishthir Singh
la source
Je n'ai pas de Podfile. Je regarde ce post stackoverflow.com/questions/51599686/…
Ferran Maylinch
Installez des cocoapods sur votre machine et exécutez les commandes pod dans votre répertoire ios.
Yudhishthir Singh
J'ai des cocoapodes. Quelles commandes pod dois-je utiliser?
Ferran Maylinch
installation du pod puis mise à jour du pod
Yudhishthir Singh
J'ai apporté des modifications à ma réponse, veuillez jeter un œil.
Yudhishthir Singh
1

Pouvez-vous suivre les étapes une par une

flutter channel master
flutter upgrade
flutter clean
flutter build ios
Dev
la source
J'ai essayé ça. Également sur le canal bêta.
Ferran Maylinch
L'erreur est liée aux capacités de signature, la branche flutter n'a rien à voir avec cela.
Yudhishthir Singh
1

Ce message est pas une réponse parce que je lutte également avec ce problème et que j'écris ceci car cela fait un moment sans correctif

Tout ce que je veux, c'est fournir plus de détails au PO et aux autres membres ici. J'ai donc tout comme OP l'a déclaré.

Voici ce que j'ai essayé:

  1. Podfile n'est pas créé (même après avoir exécuté sur Simulator et etc) et c'est pourquoi j'ai essayé d'en inclure un à partir d'une application d'exemple de flutter de Flutter Github.

    • Répertoire iOS effacé
    • Ajout d'un podfile
    • Mise à jour du pod Ran.
    • Correction des avertissements (fourni les configurations de débogage et de publication des pods à Xcode)
    • FLUTTER_ROOT a été ajouté aux paramètres définis par l'utilisateur (comme il était absent) et je recevais une erreur Xcode-backend.sh (ne me souviens pas exactement, désolé)
    • Construit

Donc, ces étapes produisent: cette erreur sur Simulator. Mêmes erreurs de signature que sans pod sur le périphérique physique

  • Supprimé tous les certificats de Keychain Access et les a restaurés via Xcode.

    Résultat: rien n'a changé

  • Suppression de Xcode, Pod et paramètres associés. Certificats supprimés. Tout restauré après un redémarrage (nouvelle installation)

    Résultat: Encore une fois, ni construire avec pod ni sans fournir les mêmes erreurs

  • J'ai mis à niveau Flutter vers le canal de développement (1.14.1) et régénéré le projet en utilisant flutter create .

    Reran construit. Avec dosettes et sans. Toujours pareil

  • J'ai également essayé de changer la signature d'Apple Developer en iOS Developer sur toutes les cibles (Pod inclus)

    En cela, j'ai eu quelques erreurs car j'ai même essayé de signer Pods-Runner (il y avait un peu d'espoir). Mais dans l'ensemble, rien de nouveau.

  • Comme j'exécute un appareil sur iOS 13.3.1 Beta, j'ai mis à niveau Target vers 13.2 (maximum disponible en ce moment?).

    Nan

  • J'ai activé les builds macOS et créé une application Mac

    Il fonctionne comme prévu, tout va bien.

Pour résumer:

  • Ce problème ne dépend pas du projet Pod / Non-Pod.
  • Rien n'a changé concernant ce problème entre le dernier flutter stable et le dernier développeur (tel que posté)
  • Ce bogue n'est pas corrigé par la réinstallation de Xcode et n'est pas lié aux certificats de trousseau
  • Le problème n'apparaît que lors de la construction pour un appareil iOS physique uniquement (iPhone X dans mon cas). Le simulateur (sans pod) fonctionne bien.

Btw. Tout fonctionnait sur MacBook Pro 13 avec Catalina 10.15.3 installé et Xcode 11.3.1.

Chaque exécution était avec l'indicateur -v et rien de suspect n'a été trouvé dans les journaux pendant la génération s

Encore. Je suis désolé si j'ai fait quelque chose de mal en postant cela, mais je ne voulais pas dupliquer ce problème ou suggérer OP une modification car ce message est assez long.

Emin Guliev
la source
Merci beaucoup pour cette réponse. Ce n'est pas la solution mais c'est très utile. De toute évidence, il y a quelque chose qui ne va pas avec Flutter. Il semble que Google ne sache pas exactement à quoi Apple s'attend, ou Apple n'est pas intéressé à laisser Flutter fonctionner sans problème ... :)
Ferran Maylinch
Soit dit en passant, hier, j'ai essayé Flutter sur un autre Mac, avec Mojave (le mien a Catalina), et j'ai eu la même erreur.
Ferran Maylinch
Il s'agit très probablement de quelque chose lié à CodeSign ou à Flutter lui-même. Nous devrions ouvrir un problème github.com/flutter/flutter/issues
Emin Guliev
Oui. Bonne idée. Faites-moi savoir si vous le faites, ou je peux le faire moi-même.
Ferran Maylinch
0

Essayez de basculer vers un canal stable via flutter channel stable, exécutez flutter upgrade, puis accédez au projet d'application et exécutezflutter run

Gioele Pannetto
la source
Malheureusement, je reçois la même erreur. J'ai même créé une nouvelle application Flutter après avoir changé pour le canal stable. J'ai mis à jour ma question pour montrer que maintenant je suis sur le canal stable.
Ferran Maylinch
J'ai également ajouté la sortie de flutter run.
Ferran Maylinch
0

Juste pour exécuter l'application en mode débogage, il n'a pas besoin de compte Apple payant. 1) Ouvrez le xCode pour ce projet et sélectionnez le périphérique et exécutez-le.

Ouvrez le XCode de ce projet et vérifiez les paramètres de construction car le chemin FLUTTER_ROOT est correct, sinon créez la racine de flottement et indiquez le chemin.

balaji ks
la source
J'ai un correct FLUTTER_ROOT. Ce n'est pas le problème ... :(
Ferran Maylinch
0

Avez-vous vérifié ce lien qui pourrait vous donner la sortie souhaitée https://github.com/flutter/flutter/issues/16507 . laissez-moi savoir si cela fonctionne peut être un problème de signature, ce post vous donnera l'idée de ce qui ne va pas. Merci

sagar acharya
la source
Je n'ai pas de Podfile donc je vérifie ceci: stackoverflow.com/questions/51599686/… Quoi qu'il en soit, je ne sais pas de quel Podfile j'ai besoin. J'en ai créé un mais j'obtiens toujours la même erreur. Alors peut-être que je n'ai pas besoin d'un Podfile ou de toute façon le problème en est un autre.
Ferran Maylinch
0

Ok, avoir un moment pour créer une réponse:

Sur la base de la réponse Subaharan Vel , question: Flutter Podfile et dossiers Pods non créés dans le répertoire ios et réponse suggérant que la construction pour le simulateur iOS peut créer un podfile à un endroit incorrect (il devrait être créé automatiquement directement dans le répertoire iOS. Il semble donc probable que votre Podfile existe quelque part là-bas. Essayez de le trouver ou supprimez tout le répertoire ios, nettoyez le projet et recréez-le. Assurez-vous également que ce n'est pas le cas. Créer un fichier pod pour ajouter des pods iOS avant d'ajouter des plugins Flutter ne connecte jamais les pods plugin dans le Podfile existant .

Bonne chance, j'espère que cela vous aidera

Adam Tucholski
la source
Il n'y en a Podfilenulle part. Je cours find . -name Podfileet je ne reçois rien. J'ai supprimé le iosrépertoire mais maintenant, comment puis-je le recréer? Si je cours, flutter build iosj'obtiens l'erreur Application not configured for iOS.
Ferran Maylinch
@Ferran Maylinch Répétez simplement toutes les étapes de Surbahan Vel (premier lien) - il a supprimé le répertoire ios, et il a été recréé après le nettoyage du projet. Si nécessaire, ajoutez un fichier pod manuellement (à partir de stackoverflow.com/a/53492243/7183675 , supprimez les pods inutiles à partir de là, vérifiez également le deuxième commentaire sous cette réponse). En dernier recours - cela peut être utile si vous ajoutez au moins un package à pubspec pour forcer Flutter à créer automatiquement un fichier pod. Même si ce package n'est pas vraiment utilisé
Adam Tucholski
0

Ce n'est pas une solution idéale, mais ce qui suit a fonctionné pour moi.

  1. Mettez à niveau votre appareil vers iOS 13.4 bêta.
  2. Effectuer une course de flottement
  3. La construction doit être réussie.
  4. Il affichera "Votre version Xcode est peut-être trop ancienne pour votre version iOS" erreur .
  5. L'application est installée sur l'appareil. Remarque: L'application ne se lancera pas automatiquement à la fin du processus.
  6. Cliquez sur l'icône de l'application installée sur votre appareil pour lancer l'application.

Cependant, vous ne pourrez rien voir dans la fenêtre de débogage car le processus se termine après avoir renvoyé l'erreur. Ce n'est pas une solution idéale mais certainement une solution de contournement jusqu'à la prochaine mise à jour de Xcode. 

Dhruva Phulsundar
la source