web-dev-qa-db-fra.com

dyld`__abort_with_payload: sans message d'erreur

Quand je lance mon application avec XCode, j'ai un crash mais pas d'erreur

App est juste en train de s'arrêter sur ce fil

 enter image description here

Que puis-je faire pour avoir plus d'informations sur le sujet?

46
Kevin ABRIOUX

Si vous utilisez des infrastructures personnalisées, vous devez l'insérer dans la section "Binaires incorporés" située dans le projet Xcode sous l'onglet Cible/Général.

79
mkonovalov

Pour moi, un simple Clean et Rebuild l'a réglé. J'espère que ça aide.

44
KlixxOne

L'ajout de la structure à la liste d'actifs binaires incorporés a résolu ce problème. Voici à quoi ressemble la configuration finale d’un framework étranger dans l’interface graphique utilisateur de Xcode en tant que framework embarqué (Xcode 9.2, j’aime mieux une piste visuelle de miettes de pain ;-)):  enter image description here

Est-ce que Apple a intentionnellement bloqué le moteur d'exécution pour indiquer au développeur que vous ne pouviez pas utiliser des infrastructures non Apple en tant qu'infrastructures simplement liées dans le développement iOS? Il vaudrait mieux que cela apparaisse comme une erreur de construction, je pense ... avec un bouton qui dit "déplacez-le!"

L'utilisation de fichiers binaires incorporés évite à l'utilisateur final de devoir ajouter le Framework indépendamment de votre application (ou si vous le faites avec un programme d'installation). Dans le cas de l'iPhone (iOS), c'est impossible, mais sur macOS, c'est possible, mais cela peut devenir désordonné rapidement. 

Pour l'utilisateur final, il est beaucoup plus pratique de simplement faire glisser une application pour l'installer sur macOS, où l'intégration devient un avantage. L’incorporation évite également les "conflits de DLL" classiques consistant à gérer des versions externes de votre infrastructure. (l'espace disque est bon marché, le temps de mon client est précieux).

12
William Cerniuk

J'ai corrigé l'erreur dans mon projet tout à l'heure!
Si vous utilisez le framework Swift dans un projet Object-C, je vous conseille de modifier les paramètres de construction.
Toujours incorporer l’option Bibliothèques standard Swift à YES. comme ça:  enter image description here

espérons que cela vous a été utile.

9
Hongbo Liu

Enfin résolu! 

Ce qui a fonctionné pour moi a été de rendre le cadre "facultatif" au lieu de "obligatoire".

J'espère que cela pourra aider!

7
Eran Talmor

Décocher "Guard Malloc" dans les diagnostics a fonctionné pour moi.  See Image for settings

4
infiniteLoop

J'ai rencontré une erreur avec la même signature (mon projet était dans Obj-C) et j'ai découvert que j'avais oublié de faire le lien avec le cadre approprié. Le message d'erreur dans le journal de débogage qui a conduit à rechercher l'erreur était: 

dyld: Symbole non trouvé: _OBJC_CLASS _ $ _ SFSafariViewController

Pour mon erreur spécifique, l'ajout de SafariServices.framework dans les cibles -> Phases de construction -> "Lien binaire avec bibliothèques" a résolu le problème. Bien que vous n'ayez probablement pas les mêmes erreurs et résolutions spécifiques, il est utile de rechercher des indices dans le journal de débogage.

3
user1825506

1) Continuez l'exécution pour voir si un message apparaît dans le débogueur tel que "MyFramework.framework" non trouvé. Si tel est le cas, suivez la discussion suivante: La bibliothèque du framework OS X n'est pas chargée: "Image introuvable" .__ Pour moi, cette réponse a fonctionné: https://stackoverflow.com/a/44796734/4060763

2) Assurez-vous d’avoir ajouté vos fichiers binaires dans la section "Incorporer les fichiers binaires".

3) Assurez-vous que vous avez activé la signature des infrastructures dans la section Phase de construction.

4) Assurez-vous que les frameworks intégrés ne sont pas des liens symboliques.

5) Vous pouvez rendre les frameworks liés optionnels au lieu d’être requis dans la phase "Link binary with libraries". Cela indiquera à iOS de ne pas rechercher ces frameworks lors du lancement. Quoi qu'il en soit, vous devez corriger les erreurs pour utiliser ces frameworks!

6) Vérifiez si toutes les entrées info.plist sont bonnes. Dans mon cas, j’utilisais un fichier Mac info.plist pour iOS. Il cherchait un fichier xib qui n'était pas présent dans le projet iOS.

7) Faites un nettoyage et construisez après tout changement. Ceci est nécessaire car xcode ne copie pas/ne modifie pas ces fichiers s'ils existent déjà.

8) Supprimez l'application de l'iPad, puis installez-la. Même raison que 7.

3
coolVick

Pour répondre à la question initiale "Que puis-je faire pour avoir plus d'informations sur le problème?", ce fil de discussion Apple fournit un conseil très simple: il vous suffit simplement de lancer votre application bloquante en dehors de XCode XCode, puis exécutez-le manuellement sur votre appareil). Cela produira un journal des incidents contenant plus de détails sur ce qui s'est passé. Vous pouvez ensuite consulter ce journal à partir du menu Fenêtre XCode/Périphériques et simulateurs -> Afficher les journaux de périphérique.

2
fred

Je venais juste de manquer l’application de "Confidentialité - Description de l’utilisation de la caméra" dans info.plist.

Je ne sais pas si cette information aide quelqu'un d'autre si ... 

2
Linus Karlsson

J'ai eu un problème similaire qui a été résolu en manquant la spécification d'autorisation dans plist (aussi bizarre que cela soit ..)

J'ai essayé d'utiliser AVCaptureDevice et il s'est écrasé au démarrage (mon application était très minime)

L'ajout de -Privacy - Camera Usage Description__info.plist l'a résolu pour moi.

1
Rock_Artist

Si vous utilisez un cadre écrit en Swift dans une application Objective-C, vous devez inclure la chaîne d’outils Swift dans l’application qui utilise le cadre.

La façon dont j'ai trouvé ceci est de créer un fichier fictif Swift dans l'application pour que XCode reconnaisse Swift et l'ajoute de manière appropriée au projet. Vous pouvez ensuite supprimer le fichier factice.

J'adorerais que quelqu'un connaisse un meilleur moyen d'ajouter explicitement Swift à un projet objective-c sans ajouter de fichier Swift.

1
markw

Je trouve le bon moyen de le résoudre.

Assurez-vous que le AppleWWDRCA.cer soit défini comme mode par défaut du système, alors cela fonctionnera:

enter image description here

1
Leo

Je faisais face au même problème. Définir 'Toujours intégrer les bibliothèques Swift Standard' sur Oui dans les paramètres de construction de ma cible a fonctionné pour moi.

0
Arpit Panda

Cela se produit parfois lorsque vous utilisez des infrastructures système accessibles uniquement à partir d'une version iOS ultérieure de votre version cible. Il peut être corrigé en cochant ce cadre lié comme facultatif.

Par exemple, un projet ciblé sur iOS 11 et utilisant AuthenticationServices pour iOS 12 La fonction de remplissage automatique se bloque sur iOS 11 de la manière décrite.

0
LilKitty

Je viens d'avoir le même problème et la raison en est que j'ai révoqué mes certificats de développeur et en ai créé de nouveaux avec Xcode 10, après une nouvelle mise à jour macOS Mojave (pour certains, il supprimait tous les identifiants de connexion et certificats de trousseau). 

Donc, tout ce que je devais faire était de supprimer les applications installées de mon appareil et de les réexécuter via Xcode, afin d’installer le nouveau profil de provisioning approprié dans mon appareil :)

0
xscoder

J'ai eu cette situation après la mise à jour Xcode vers v10.2.1 et Swift vers v5.0 Si vous utilisez carthage + RxSwift, le nouveau RxSwift utilise RxRelay.framework. Vous devriez aller dans votre répertoire/Carthage/Build trouver ce framework et l'adapter à votre projet. N'oubliez pas de l'ajouter également à votre script carthage copy-frameworks: $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Résolu grâce à: https://stackoverflow.com/a/52550148/2493555

0
milczi

si vous utilisez le cadre de compilation de Carthage, après l'avoir fait glisser dans votre projet, vous devez l'ajouter aux fichiers binaires généraux/incorporés.

0
responser

J'ai corrigé mon erreur dans mon projet.
1. Vérifiez les autres threads quand une erreur est survenue.J'ai constaté que mon erreur concerne la caméra.

enter image description here

  1. Ajoutez la confidentialité de la caméra dans le fichier Info.plist.
    1) Ouvrez le fichier info.plist.
    2) Ajoutez une nouvelle clé appelée "Confidentialité - Description de l'utilisation de la caméra" et entrez une chaîne décrivant pourquoi l'application a besoin de la caméra. La description décrite s'affichera lorsque votre application doit utiliser la confidentialité.

enter image description here

0
WangYang