【问题标题】:What is causing this Crashlytics compile warning? (Auto-Linking supplied '...' framework linker option at '...' is not a dylib)是什么导致了这个 Crashlytics 编译警告? (自动链接在“...”处提供的“...”框架链接器选项不是 dylib)
【发布时间】:2015-05-23 00:44:22
【问题描述】:

编译我的主要目标(不是像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 正常 i386 cd ~/Documents/my_app/MyApp 导出 IPHONEOS_DEPLOYMENT_TARGET=8.0 导出 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

【问题讨论】:

    标签: ios xcode crashlytics


    【解决方案1】:

    缺失的环节:

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

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

    ld:警告:提供了自动链接 '../../Crashlytics.framework/Crashlytics',框架链接器选项位于 ../../Crashlytics.framework/Crashlytics 不是 dylib

    链接框架:

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

    • 在执行此过程时,请确保在 Targets 下选择/突出显示您的应用。

    【讨论】:

    • 现在,Fabric.framework 也需要以同样的方式链接。
    • 你完全节省了我浪费的时间!
    • 嘿,我最近遇到了完全相同的问题。我使用来自 Google 的 GGLSignIn 获得了它,而我的单元测试给我带来了麻烦。所以,是的,解决方案是相同的,但目标是 MyAppTests,所以请记住这一点!
    • 是的,这就是我的解决方案。 (Fabric 由我的另一个上游框架链接,并包含在最终的二进制文件中,但编译器坚持自动链接它,并告诉我。)
    • 这为我修复了它,但在我的情况下,错误消息非常具有误导性:警告中命名的库不是我必须添加的库!我也遇到了未定义的符号错误,而定义这些符号的库是正确的。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        Xcode 确实从 #import 语句中推断出要链接的框架。如果您导入未链接的框架,则会收到此警告。

        【讨论】:

          【解决方案5】:

          我有同样的问题,但原因不同。

          错误输出

          ld:警告:自动链接提供了“~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric”,~/GameFolder/Pods/Fabric/tvOS/Fabric.framework/Fabric 中的框架链接器选项不是一个动态库 架构 x86_64 的未定义符号: “_OBJC_CLASS_$_Answers”,引用自: GameScene.o 中 __ObjC.Answers 的类型元数据访问器 AppDelegate.o 中 __ObjC.Answers 的类型元数据访问器 “_OBJC_CLASS_$_Crashlytics”,引用自: AppDelegate.o 中 __ObjC.Crashlytics 的类型元数据访问器 “_OBJC_CLASS_$_Fabric”,引用自: AppDelegate.o 中 __ObjC.Fabric 的类型元数据访问器 ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

          原因

          • 我的目标是覆盖OTHER_LDFLAGS

          解决方案

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

          【讨论】:

          • 是的,这解决了我的问题。谢谢 确实。 PS:我用的是cocoapods。
          • 很高兴这对您有所帮助。
          • +1。几个月来我一直有 Cocoapods 问题。甚至认为我搞砸了其他一些配置,甚至完全擦除和恢复了我的 Mac。这解决了我所有的问题,我可以再次有效地使用 cocoapods!谢谢!
          • 这是我从 Carthage 切换到 Cocoapods 后遇到的问题
          【解决方案6】:

          我按照@i'L'i 提供的所有步骤操作,但在构建阶段找不到Crashlytics.frameworkFabric.framework 文件。

          所以这对我有帮助。

          第 1 步:按照Here. 给出的所有步骤进行操作

          第 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 步: 构建成功,尽情享受。 :)

          【讨论】:

            猜你喜欢
            • 2014-12-04
            • 1970-01-01
            • 2015-06-21
            • 2021-06-09
            • 2023-03-11
            • 2011-04-29
            • 2016-12-25
            • 2012-09-09
            • 2013-05-31
            相关资源
            最近更新 更多