什么导致这个Crashlytics编译警告? (自动链接提供'…'框架链接器选项'…'不是一个dylib)

编译我的主要目标(而不是像这里的testing目标)产生这个错误:

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 

从这个构build命令:

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 /开发者/ 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-iphonesimulator -F〜/ Documents / my_app / MyApp -filelist〜/ Library /Developer/Xcode/DerivedData/MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm/Build/Intermediates/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.LinkFileList -Xlin 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 -fobjc-link-runtime -Xlinker -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-dbmrsjmskpqxmnegayfzfxgcwvsm / Build / Intermediates /MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp_dependency_info.dat -o〜/ Library / Developer / Xcode / DerivedData / MyApp-dbmrsjmskpqxmnegayfzfxgcwvsm / Build / Products / Debug-iphonesimulator / MyApp.app / MyApp的

缺失的环节:

这个错误几乎总是由没有链接到库的二进制产生的(在这种情况下,它将是Crashlytics.framework ):

链接失败

尝试构build目标MyApp (其中包含带#import <Crashlytics/Crashlytics.h>标头将产生错误:

ld:警告:提供的自动链接“../../Crashlytics.framework/Crashlytics”,框架链接器选项../../Crashlytics.framework/Crashlytics不是dylib

链接框架:

链接成功 幸运的是,只需将项目导航器中的“ Frameworks文件夹中的Crashlytics.framework拖动到“ Link Binary With Libraries ”列表中或者使用+ ,就可以轻松解决问题。

  • 确保您在执行此过程时已在“目标”下选中/突出显示您的应用程序。

在这里输入图像说明

我有同样的问题,但我的理由是不同的。

错误输出

ld:警告:在〜/ GameFolder / Pods / Fabric / tvOS / Fabric.framework / Fabric中提供的自动链接提供的“〜/ GameFolder / Pods / Fabric / tvOS / Fabric.framework / Fabric”框架链接器选项不是dylib Undefined符号体系结构x86_64:“_OBJC_CLASS _ $ _答案”,引用来自:types元数据访问器为__ObjC.Answers在GameScene.otypes元数据访问器为__ObjC.Answers在AppDelegate.o“_OBJC_CLASS _ $ _ Crashlytics”,引用来自:types元数据访问器为__ObjC AppDelegate.o中的碎片types“_OBJC_CLASS _ $ _ Fabric”,引用来自:AppDelegate.o中__ObjC.Fabric的types元数据访问器ld:体系结构x86_64中找不到符号clang:error:连接器命令失败,退出代码1 -v看到调用)

原因

  • 我的目标是重写OTHER_LDFLAGS

  • OTHER_LDFLAGS更改为仅inheritance链接器标志。 基本上把它改成$(inherited)

为了将来的参考,如果您将testing文件链接到您的应用程序目标,也会发生这种情况。

例如: https : //github.com/realm/realm-cocoa/issues/1661

我遵循@ i'L'i提供的所有步骤,但是在构build阶段我无法findCrashlytics.frameworkFabric.framework文件。

所以这帮助了我。

第1步:按照这里给出的所有步骤。

第2步:现在,当您无法通过单击+执行以下操作在Link Binary With LibrariesfindCrashlytics.frameworkFabric.framework文件。

2.1:点击Link Binary With Libraries +button。
2.2:点击Add Other...button。
2.3:现在从Pod文件夹中selectCrashlytic.frameworkFabric.framework – 如果使用cocoapods,则从下载的文件夹中select两个文件。

步骤3:build立成功,享受。 🙂

我有同样的问题。 也许我搞砸了初始结构安装,但是一旦我添加Fabric.framework到框架列表(应该在你的应用程序的根文件夹默认情况下)一切正常。

与我所说的和user3517250提到的相反,问题可能是你有#import语句不应该在那里。

Xcode确实推断了从#import语句链接的框架。 如果你导入一个你不链接的框架,那么你会得到这个警告。