J'essaie d'exécuter une application Swift sur mon iPhone 4s. Cela fonctionne très bien sur le simulateur, et mon ami peut le faire fonctionner avec succès sur son iPhone 4s. J'ai iOS 8 et la version officielle de Xcode 6.
j'ai essayé
- Redémarrage de Xcode, iPhone, ordinateur
- Nettoyage et reconstruction
- Révocation et création d'un nouveau profil de certificat / provision
- La valeur Runpath Search Paths est
$(inherited) @executable_path/Frameworks
- Le contenu intégré contient du code Swift est «Oui»
- L'identité de signature de code est développeur
Voici l'erreur dans son intégralité
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
Réponses:
Pour moi, aucune des solutions précédentes n'a fonctionné. Nous avons découvert qu'il existe un indicateur "Always Embed Swift Standard Libraries" dans les paramètres de construction qui doit être défini sur YES. C'était NON par défaut!
Build Settings > Always Embed Swift Standard Libraries
Après avoir défini cela, nettoyez le projet avant de le reconstruire.
Pour les lecteurs passionnés, quelques explications La partie la plus importante est:
Le drapeau s'appelait autrefois
Embedded Content Contains Swift Code
la source
Étonnamment, je n'ai fait que "nettoyer" mon projet (shift + cmd + K) et cela a fonctionné. Semble cependant être lié au certificat.
la source
J'ai commencé à recevoir cette erreur lorsque j'ai supprimé:
de
Runpath Search Paths
dans mes paramètres de construction. Le remplacer a tout réparé (Dieu merci pour le contrôle de source!)Je ne sais pas comment il y est arrivé, mais il semble nécessaire qu'un binaire trouve son runtime Swift intégré.
la source
@loader_path/../Frameworks
pour les tests unitaires macOS et@loader_path/Frameworks
pour les tests unitaires iOS qui devaient être ajoutés.Pour l'appareil, vous devez également ajouter le cadre dynamique à la
Embedded binaries
section de l'General
onglet du projet.la source
Dans Xcode 8, l'option pour
Embedded Content Contains Swift Code
option n'est plus disponible.Il a été renommé en
"Always Embed Swift Standard Libraries = YES"
la source
Je pense que c'est un bug lorsque les certificats sont générés directement à partir de Xcode. Pour résoudre (au moins dans Xcode 6.1 / 6A1052d):
la source
OK, partage ici une autre cause de cette erreur. Il m'a fallu quelques heures pour régler ce problème.
Dans mon cas, la stratégie d'approbation de mon certificat dans Keychain Access était Always Trust , le restaurer en mode par défaut a résolu le problème.
Pour ouvrir la fenêtre des paramètres du certificat, double-cliquez sur le certificat dans la liste des certificats d'accès au trousseau.
la source
J'avais ce problème avec l'exécution de mes tests Swift (mais pas mon application). Il s'avère que le test devait avoir plus que
@executable_path/Frameworks
sonRunpath Search Paths
réglage de construction pour la cible de test. Définir les chemins de recherche Runpath sur les éléments suivants a fonctionné pour moi:la source
carthage copy-frameworks
car c'était une dépendance secondaire (celle qu'un cadre que j'utilisais avait ajouté )Ce problème se produit à nouveau dans Xcode 10.2 . Vous devez télécharger et installer le package suivant d'Apple. Il fournit un support d'exécution Swift 5 pour les outils de ligne de commande .
https://support.apple.com/kb/DL1998?locale=en_US
la source
msvcrt.dll
Vous devez définir l'
Runpath Search Paths
à@executable_path/Frameworks
comme le montre la capture d' écran suivante des paramètres de compilation:Si vous avez des frameworks intégrés créés dans Swift, vous pouvez définir
YES
les options de constructionEmbedded Content Contains Swift Code
.la source
otool -L
car ces dylibs m'ont dit qu'ils utilisaient déjà@rpath/...
leur propre chemin. Maintenant, en définissant le chemin de recherche Runpath sur le chemin de ce dossier, je peux exécuter mon outil et il trouvera les dylibs qui sont stockés dans un dossier à côté de lui.@rpath/libswiftAppKit.dylib
. Un problème m'a amené à apprendre que je devais ajouter le chemin de recherche:@executable_path/../Frameworks/
sur la base de ces instructions . Que cela s'applique uniquement à la structure de mon projet, je ne peux pas le dire. Il est à noter que je n'ai pas eu à nettoyer DerivedData pour que ce paramètre prenne effet!Je pense qu'Apple l'a déjà résumé sous les plantages de l'application Swift en essayant de référencer la bibliothèque Swift libswiftCore.dylib
Cité de Q&A technique QA1886 :
Comme les gars AirSign état les racines du problème à partir de l' attribut OU manquant dans le champ sujet du certificat .
Objet: UID = 269J2W3P2L, CN = iPhone Distribution: nom de l'entreprise, OU = 269J2W3P2L , O = nom de l'entreprise, C = FR
J'ai un certificat de développement d'entreprise, la création d'un nouveau a résolu le problème.
la source
Projetons P importe une bibliothèque personnalisée L, alors vous devez ajouter L dans
P -> Build Phases -> Embed Frameworks -> +
. Ça marche pour moi.la source
Le moyen le plus simple et le plus facile à ignorer: nettoyer et reconstruire.
Cela a résolu le problème après avoir essayé les réponses ci-dessus et n'a pas fonctionné.
la source
J'avais le même problème après avoir déménagé sur un nouveau Mac, et après des heures, en essayant toutes les réponses suggérées dans les questions, rien de tout cela n'a fonctionné pour moi.
La solution pour moi était d'installer ce certificat manquant. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
J'ai trouvé la réponse ici. https://stackoverflow.com/a/14495100/976628
la source
Modifiez les ressources de pods de copie pour la cible de:
à:
la source
J'ai résolu en supprimant les données dérivées et cette fois, cela a fonctionné correctement. Testé avec Xcode 7.3.1GM
la source
Ce message d'erreur peut également être provoqué lors de la mise à niveau de Xcode (et par la suite vers une nouvelle version de Swift) et votre projet utilise un framework construit / compilé avec une version plus ancienne / précédente de Swift.
Dans ce cas, reconstruire le framework et le rajouter résoudra le problème.
la source
Après avoir tout essayé, j'ai finalement découvert que la construction ne semblait pas toujours inclure chaque détail encore et encore. Peut-être pour accélérer le processus ... Afin d'assurer un emballage ENTIER avant de courir sur un appareil, faites d'abord un nettoyage: Shift-Cmd-K. Construisez ensuite avec: Cmd-B. Ensuite, exécutez-le sur votre appareil. Facile. Cordialement à tous les gars sympas de cet endroit!
la source
Dans mon cas, c'était juste le nom de ma cible:
Je l'ai renommé comme ceci: MyApp.something et le même problème sont apparus. Mais j'ai vu dans la fenêtre Paramètres de construction, le nom de mon module de produit a été changé comme ceci MyApp-quelque chose . J'ai donc supprimé le point de mon nom cible ( MyAppSomething ) et le problème avait disparu.
la source
Pour moi, après avoir tout essayé sans succès, ce qui a fonctionné a été de l'enlever
@executable_path/Frameworks
dePackaging section
(je ne sais pas comment cela a pu être là-bas en premier lieu)la source
Aucune des solutions n'a fonctionné pour moi. Le redémarrage du téléphone l'a corrigé. Étrange mais ça a marché.
la source
aucune de ces solutions ne semblait fonctionner, mais lorsque j'ai changé l'autorisation du certificat World Wide Developer,
Use System defaults
cela a fonctionné. J'ai inclus les étapes et les captures d'écran dans le lien ci-dessousJe vous encourage à enregistrer le ticket dans le rapport de bug d'Apple comme mentionné ici, car Apple devrait vraiment résoudre cette énorme erreur: https://stackoverflow.com/a/41401354/559760
la source
Xcode 7.2, iOS 9.2 sur un appareil, 9.0 sur l'autre. Les deux avaient l'erreur. Aucune idée de ce qui a changé cela, mais les solutions ci-dessus pour le WWDR étaient correctes pour moi. Installez ce certificat et le problème résolu.
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
la source
Il y a beaucoup de réponses, mais ma réponse pourrait aider quelqu'un.
J'ai le même problème, mon application fonctionne bien sur le simulateur mais sur l'appareil s'est écrasé comme je déjeune app et donne l'erreur comme ci-dessus. J'ai essayé toutes les réponses et solutions. Dans mon cas, mon projet, j'ai plusieurs cibles. J'ai créé la cible B en double à partir de la cible A. La cible B fonctionne bien tandis que la cible A s'est écrasée. J'utilise différents éléments d'image pour chaque cible. Après avoir recherché et fait google, j'ai trouvé quelque chose qui pourrait aider quelqu'un.
L'application s'arrête de planter lorsque je change le nom des éléments Launch images pour les deux applications. Par exemple, ciblez un nom de ressource d'image de lancement LaunchImage A. Cible B Déjeuner Image nom de l'actif LaunchImage B et attribué correctement dans l'onglet Général de chaque cible. Mes applications fonctionnent bien.
la source
Pour moi, créer une application Swift en ligne de commande MacOS qui dépendait de bibliothèques Swift tierces (par exemple SQLite), aucune des solutions ci-dessus ne semblait fonctionner. Ce qui a fonctionné a été l'ajout direct du chemin suivant à mes chemins de recherche Runpath dans les paramètres de construction:
/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/
Faire cela a donné un avertissement lors de l'exécution disant que Xcode avait trouvé 2 versions de libswiftCore - ce qui est logique. Sauf que le fait de ne pas inclure cette ligne a empêché Xcode de trouver des versions de libswiftCore.
Quoi qu'il en soit, cela fera l'affaire pour moi même si cela ne semble pas correct - mon application n'est qu'un utilitaire que je n'ai pas l'intention de distribuer et au moins il fonctionne maintenant!
la source
J'ai plusieurs versions de Xcode installées en même temps. Le cadre a été construit avec une version plus récente de Xcode. L'application que j'ai essayé de compiler était avec une ancienne version de Xcode. Lorsque j'ai nettoyé et compilé le framework et l'application avec la même version de Xcode, les choses ont fonctionné.
la source
J'ai commencé à obtenir cette erreur similaire pour tester l'ajout de fichier S3 à l'aide des services AWS. Ci-dessous était l'erreur. dyld: bibliothèque non chargée: @ rpath / AWSAutoScaling.framework / AWSAutoScaling
J'ai beaucoup cherché et les solutions ci-dessus ne sont pas non plus utiles pour moi. Le lien ci-dessous m'a aidé à résoudre ce problème.
https://forums.developer.apple.com/thread/21292
Qui dit de résoudre ce problème en re-téléchargeant le WWDR (Apple Worldwide Developer Relations Certification Authority) .
la source
Je suis sur Xcode 8.3.2. Pour moi, le problème était que le certificat AppleWWDRCA était à la fois dans le système et le trousseau de connexion. Supprimé les deux, puis ajouté au trousseau de connexion, il fonctionne maintenant à nouveau correctement. 2 jours perdus 😭
la source
J'utilise Xcode 8.3.3 et Xcode 9.2. La solution pour moi était de passer mon Xcode par défaut de 8 à 9 à l'aide de Xcode Select:
$ xcode-select --print-path
$ sudo xcode-select -switch /Applications/Xcode-9.2.app
Edit: En fait, ce qui semblait aider ici était que Xcode 9.2 utilisait les données dérivées de Xcode 8.3.3. Pas une solution mais au moins ça me permet d'avancer dans mon travail.
la source
Si vous obtenez une erreur comme celle-ci:
et utilisez CocoaPods dans votre framework, puis essayez de modifier
Podfile
et de supprimerinherit! :search_paths
de laTest
cible, puis exécutezpod install
nouveau.Pour plus de détails, voir https://github.com/CocoaPods/CocoaPods/issues/8868 .
la source