ChatGPT解决这个技术问题 Extra ChatGPT

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

Compiling my main target (not a test target like here) yields this error:

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

From this build command:

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


l
l'L'l

The Missing Link:

This error is almost always produced by not having the binary linked to the library (In this case it would be the Crashlytics.framework):

https://i.stack.imgur.com/lx239.png

Trying to build the target MyApp (which includes headers with #import <Crashlytics/Crashlytics.h> will produce the error:

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

Link the Framework:

https://i.stack.imgur.com/UDxuX.png

Make sure you have your App selected/highlighted under Targets while doing this process.

https://i.stack.imgur.com/oe1Z4.png


Nowadays, the Fabric.framework also needs to be linked in the same fashion.
You have totally saved my wasted days !
Hey, there, I had the exact same issue just recently. I had it with my GGLSignIn from Google and and it was my unit tests that were giving me troubles. So, yeah, the solution was the same but target was MyAppTests, so have that in mind!!
Yep, this was my solution. (Fabric was linked by another upstream framework of mine, and was included in the final binary, but the compiler insisted on auto-linking it, and telling me about it.)
This fixed it for me, though in my case the error message was very misleading: the library named in the warning was not the one I had to add! I also was getting undefined symbol errors and the library that defined those symbols was the correct one.
x
xemacobra

I had the same issue but my reason was different.

Error Output

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)

Reason

My target was overriding the OTHER_LDFLAGS.

Solution

Changed the OTHER_LDFLAGS to just inherit the Linker Flags. Basically, changed it to $(inherited)


Yeah, this sorted out my problem. Thanks Indeed. PS: I was using cocoapods.
Glad this was helpful.
+1. I've been having Cocoapods issues for months. Even went as far as completely wiping and restoring my Mac thinking I had messed some other configuration up. This fixed all my issues and I can use cocoapods effectively again! Thank you!
this was my problem after switching from Carthage to Cocoapods
C
Community

I followed all steps provided by @i'L'i but I was not able to find Crashlytics.framework and Fabric.framework file in build phases.

So this helped me.

Step 1: Follow all the steps given Here.

Step 2: Now when you are unable to find Crashlytics.framework and Fabric.framework files in Link Binary With Libraries by clicking + do following.

2.1: Click on + button in Link Binary With Libraries.
2.2: Click on Add Other... button.
2.3: Now chose Crashlytic.framework and Fabric.framework from Pod folder - if using cocoapods, else choose both file from where you have downloaded it.

Step 3: Build Succeeded, Enjoy. :)


i
iagomr

For future reference, this can also happen if you link your test files to your app target.

For example: https://github.com/realm/realm-cocoa/issues/1661


u
user3517250

I had the same problem. Maybe I messed up the initial fabric install but once I added Fabric.framework to the list of frameworks (should be in the root folder of your app by default) everything worked.


K
KPM

Conversely to what I'L'I and user3517250 mention, the problem might also be that you have #import statements that shouldn't be there.

Xcode does infer the frameworks to link against from the #import statements. If you import a framework that you don't link against, then you get this warning.


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅