web-dev-qa-db-fra.com

Quelle est la cause de cet avertissement de compilation de Crashlytics? (La liaison automatique fournie avec l'option de l'éditeur de framework '...' à '...' n'est pas un dylib)

La compilation de ma cible principale (pas une cible de test comme ici ) génère cette erreur:

ld: warning: Auto-Linking supplied 
   '~/Documents/my_app/MyApp/Crashlytics.framework/Crashlytics', 
framework linker option at 
    ~/Documents/my_app/MyApp/Crashlytics.framework/Crashlytics 
is not a dylib

À partir de cette commande de génération:

Ld /Build/Products/Debug-iphonesimulator/MyApp.app/MyApp normal i386 cd ~/Documents/my_app/MyApp export IPHONEOS_DEPLOYMENT_TARGET = 8.0 export PATH = "/ Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Développeur/usr/bin: /Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin "/Applications/Xcode.app/Contents/Developer/Toolchains/ XcodeDefault.xctoolchain/usr/bin/clang -Arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -L ~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Products/Debug-iphonesimulator -F ~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Products/Debug-iphonesimapp /Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.LinkFileList -X ker -rpath -Xlinker @ executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-CocoaLumberjack -lPods-Mantle -framework CFNetwork -framework Foundation -framework Security -framework SystemConfiguration -fobjc-arc-runobj -no_implicit_dylibs -mios-simulator-version-min = 8.0 -framework CoreGraphics -lPods -framework MapKit -framework Fabric -lPods-MyApp -Xlinker -dependency_info -Xlinker ~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmscpfmmfcmf /MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp_dependency_info.dat -o ~/Library/Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsmsm/Build/Products/Debug-ip MyApp

53
Robert

Le lien manquant:

Cette erreur est presque toujours produite par le fait que le binaire n'est pas lié à la bibliothèque (dans ce cas, ce serait le Crashlytics.framework):

Link Fail

Essayer de construire la cible MyApp (qui inclut les en-têtes avec #import <Crashlytics/Crashlytics.h> produira l'erreur:

ld: avertissement: Auto-Linking fourni '../../Crashlytics.framework/Crashlytics', option de lieur de framework à ../../Crashlytics.framework/Crashlytics n'est pas un dylib

Lier le Framework:

Link Success Heureusement, il devrait être facile de résoudre le problème simplement en faisant glisser le Crashlytics.framework du dossier Frameworks dans le navigateur de projet dans la liste de Link Binary With Libraries ou en utilisant le +.

  • Assurez-vous que votre application est sélectionnée/mise en évidence sous Cibles lors de ce processus.

enter image description here

80
l'L'l

J'ai eu le même problème mais ma raison était différente.

Sortie d'erreur

ld: avertissement: liaison automatique fournie '~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric', option de l'éditeur de liens dans ~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric n'est pas un dylib non défini symboles pour l'architecture x86_64: "_OBJC_CLASS _ $ _ Answers", référencé à partir de: type accesseur de métadonnées pour __ObjC.Answers dans GameScene.o type accesseur de métadonnées pour __ObjC.Answers dans AppDelegate.o "_OBJC_CLASS _ $ _ Crashlytics", référencé pour: type metObata .Crashlytics dans AppDelegate.o "_OBJC_CLASS _ $ _ Fabric", référencé à partir de: type accesseur de métadonnées pour __ObjC.Fabric dans AppDelegate.o ld: symbole (s) introuvable pour l'architecture x86_64 clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisation) -v pour voir l'invocation)

Raison

  • Mon objectif était en train de remplacer le OTHER_LDFLAGS.

Solution

  • Modification de OTHER_LDFLAGS Pour hériter simplement des indicateurs de l'éditeur de liens. Fondamentalement, l'a changé en $(inherited)
16
xemacobra

J'ai suivi toutes les étapes fournies par @ i'L'i mais je n'ai pas pu trouver Crashlytics.framework et Fabric.framework fichier dans les phases de construction.

Cela m'a donc aidé.

Étape 1: Suivez toutes les étapes données Ici.

Étape 2: Maintenant, lorsque vous ne parvenez pas à trouver Crashlytics.framework et Fabric.framework fichiers dans Link Binary With Libraries en cliquant + faire suivre.

2.1: Cliquez sur + bouton dans Link Binary With Libraries.
2.2: Cliquez sur Add Other... bouton.
2.3: Maintenant, choisissez Crashlytic.framework et Fabric.framework du dossier Pod - si vous utilisez des cocoapods, choisissez les deux fichiers à partir de l'endroit où vous les avez téléchargés.

Étape 3: Build Succeeded, Enjoy. :)

5
Zaid Pathan

Pour référence future, cela peut également se produire si vous liez vos fichiers de test à la cible de votre application.

Par exemple: https://github.com/realm/realm-cocoa/issues/1661

4
iagomr

À l'inverse de ce que I'L'I et user3517250 mentionnent, le problème peut également être que vous avez #import déclarations qui ne devraient pas être là.

Xcode déduit les cadres de référence à partir du #import déclarations. Si vous importez un framework contre lequel vous ne liez pas, vous obtenez cet avertissement.

1
KPM

J'ai eu le même problème. J'ai peut-être foiré l'installation initiale de Fabric, mais une fois que j'ai ajouté Fabric.framework à la liste des frameworks (devrait être dans le dossier racine de votre application par défaut), tout a fonctionné.

1
user3517250