OSX链接错误的Fabric Answers

k06*_*06a 6 macos cocoapods twitter-fabric

试图使用OSO Answers平台的annonced 框架:

pod 'Fabric'
pod 'Answers'
pod 'Crashlytics'

#import <Fabric/Fabric.h>
#import <Answers/Answers.h>
#import <Crashlytics/Crashlytics.h>

[Fabric with:@[[Crashlytics class], [Answers class]]];
Run Code Online (Sandbox Code Playgroud)

并得到一堆错误:

...
duplicate symbol _OBJC_METACLASS_$_CLSAnswersInviteEvent in:
/Users/k06a/Projects/UXMaterial/Pods/Answers/OSX/Answers.framework/Answers(CLSAnswersInviteEvent.o)
/Users/k06a/Projects/UXMaterial/Pods/Crashlytics/OSX/Crashlytics.framework/Crashlytics(CLSAnswersInviteEvent.o)
ld: 200 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

k06*_*06a 16

那是因为Crashlytics框架Answers本身已经包含框架.你只需要这样做:

Podfile:

pod 'Fabric'
pod 'Crashlytics'
Run Code Online (Sandbox Code Playgroud)

你的AppDelegate.m:

#import <Fabric/Fabric.h>
#import <Crashlytics/Answers.h>
#import <Crashlytics/Crashlytics.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    [Fabric with:@[[Crashlytics class], [Answers class]]];
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 对于swift,只导入Fabric和Crashlytics,因为Answers对象包含在Crashlytics中:) (3认同)