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
Que puis-je faire pour avoir plus d'informations sur le sujet?
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.
Pour moi, un simple Clean
et Rebuild
l'a réglé. J'espère que ça aide.
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 ;-)):
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).
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!
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.
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.
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.
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 ...
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.
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.
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:
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.
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.
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 :)
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
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.
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.