使用FireBase + CocoaPods的Google广告会出现错误:"复制符号用于架构x86_64"

时间:2016-11-04 17:04:49

标签: swift firebase

for (auto&& doc : cursor)
...

导致此错误:

  

51968复制符号for architechture x86_64

callstack由来自其他框架的已编译类组成。

Swift 3,XCode 8。

没有此pod(FireBase),我的项目可以正常工作。

1 个答案:

答案 0 :(得分:0)

问题是关于-ObjC标志。 CocoaPods自动将此标志添加到Other linker flags项目中。

但是这个标志我的其他自定义项目没有正确构建。 为了解决这个问题,我做了这些步骤。

  1. https://firebase.google.com/docs/ios/setup我已经下载在没有CocoaPods的情况下整合下的文件。
  2. 按照 Readme.md 所述,将多个franeworks拖入文件: FirebaseAnalytics.frameworkFirebaseCore.frameworkFirebaseInstanceID.frameworkGoogleInterchangeUtilities.frameworkGoogleSymbolUtilities.frameworkGoogleToolboxForMac.framework以及admob:GoogleMobileAds.framework
  3. 为了防止-ObjC使用Other linker flag使用-force_load强制使用所有库。也就是-force_load GoogleMobileAds.framework/GoogleMobileAds -force_load FirebaseAnalytics.framework/FirebaseAnalytics -force_load FirebaseCore.framework/FirebaseCore -force_load GoogleToolboxForMac.framework/GoogleToolboxForMac -force_load GoogleSymbolUtilities.framework/GoogleSymbolUtilities -force_load GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities -force_load FirebaseInstanceID.framework/FirebaseInstanceID
  4. 不要忘记在控制台中创建和下载 GoogleService-Info.plist 文件: https://console.firebase.google.com

    **编辑**

    版本3.12拒绝-force_load GoogleSymbolUtilities.framework/GoogleSymbolUtilities

    所以,现在正确的解决方案是:

    -force_load GoogleMobileAds.framework/GoogleMobileAds -force_load FirebaseAnalytics.framework/FirebaseAnalytics -force_load FirebaseCore.framework/FirebaseCore -force_load GoogleToolboxForMac.framework/GoogleToolboxForMac -force_load GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities -force_load FirebaseInstanceID.framework/FirebaseInstanceID