是什么导致此 Crashlytics 编译警告? (自动链接在“...”处提供的“...”框架链接器选项不是 dylib)

What is causing this Crashlytics compile warning? (Auto-Linking supplied '...' framework linker option at '...' is not a dylib)

编译我的主要目标(不是像 here 这样的测试目标)产生了这个错误:

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

来自这个构建命令:

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/Developer/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 -Xlinker -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

失踪者Link:

此错误几乎总是由未将二进制文件链接到库(在本例中为 Crashlytics.framework)引起的:

尝试构建目标 MyApp(包括 headers 和 #import <Crashlytics/Crashlytics.h> 将产生错误:

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

Link 框架:

幸运的是,只需将 Crashlytics.framework 从项目导航器中的 Frameworks 文件夹拖到 Link Binary With Libraries 列表中或使用 + 即可轻松解决问题。

  • 确保在执行此过程时您的应用程序 selected/highlighted 位于“目标”下。

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

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

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

与 I'L'I 和 user3517250 提到的相反,问题也可能是您有 #import 不应该存在的语句。

Xcode 确实根据 #import 语句推断出 link 的框架。如果您导入您不 link 反对的框架,则会收到此警告。

我遇到了同样的问题,但我的原因不同。

错误输出

ld: warning: Auto-Linking supplied '~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric', framework linker option at ~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric is not a dylib Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_Answers", referenced from: type metadata accessor for __ObjC.Answers in GameScene.o type metadata accessor for __ObjC.Answers in AppDelegate.o "_OBJC_CLASS_$_Crashlytics", referenced from: type metadata accessor for __ObjC.Crashlytics in AppDelegate.o "_OBJC_CLASS_$_Fabric", referenced from: type metadata accessor for __ObjC.Fabric in AppDelegate.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因

  • 我的目标是覆盖 OTHER_LDFLAGS

解决方案

  • OTHER_LDFLAGS 更改为仅继承链接器标志。基本上,将其更改为 $(inherited)

我遵循了@i'L'i 提供的所有步骤,但我无法在构建阶段找到 Crashlytics.frameworkFabric.framework 文件。

所以这对我有帮助。

第 1 步:按照给定的所有步骤进行操作

第 2 步: 现在当您无法通过单击 +Link Binary With Libraries 中找到 Crashlytics.frameworkFabric.framework 文件时执行以下操作。

2.1: 单击 Link Binary With Libraries 中的 + 按钮。
2.2: 点击 Add Other... 按钮。
2.3: 现在从 Pod 文件夹中选择 Crashlytic.frameworkFabric.framework - 如果使用 cocoapods,则从您下载的位置选择这两个文件。

第 3 步:构建成功,请享用。 :)