2016-10-28 33 views
8

在Podfile中包含「Firebase/Auth」後,我得到EXC_BAD_ACCESS。沒有添加任何Firebase代碼行就會發生這種情況。我使用的Xcode 8 swift3並將所得豆莢 -在Podfile中包含Firebase/Auth時,EXC_BAD_ACCESS代碼= 2

Installing Firebase (3.8.0) 
Installing FirebaseAnalytics (3.5.1) 
Installing FirebaseAuth (3.0.6) 
Installing FirebaseCore (3.4.4) 
Installing FirebaseInstanceID (1.0.8) 
Using GTMOAuth2 (1.1.4) 
Using GTMSessionFetcher (1.1.7) 
Using GoogleAppUtilities (1.1.2) 
Installing GoogleInterchangeUtilities (1.2.2) 
Using GoogleSignIn (4.0.1) 
Using GoogleSymbolUtilities (1.1.2) 
Installing GoogleToolboxForMac 2.1.0 (was 2.1.0) 
Using Localize-Swift (1.6) 
Using ProtocolBuffers-Swift (3.0.6) 
Using QorumLogs (0.9) 

的錯誤出現在線程1 [UIViewController(FIRAScreenClassName) fira_viewDidAppear:]:

出現這種情況只有在吊艙目標本身是嵌入在應用程序最終框架。

我也有谷歌分析。是否因爲ARC未啓用?我如何在xcode-8上做到這一點? 還有其他選擇嗎?

+0

我在Updatinag谷歌登錄框架後發生了一些問題 – vitkuzmenko

+0

我通過將Google Framefork降級到2.0.4版解決了問題:pod'Google/SignIn','2.0。 4' – vitkuzmenko

+0

你可以添加一些stacktrace來幫助調試問題嗎?謝謝 – adbitx

回答

15

最新的Firebase/Core(3.8.0)版本似乎存在問題。即使@IBDesignable也會因您提到的方法簽名的遞歸調用而崩潰。

你有兩個選擇:

  1. 在Info.plist的(應用),設置FirebaseAutomaticScreenReportingEnabled爲NO(布爾)。這解決了我的運行應用程序的問題,但IBDesignable資源造成了構建此錯誤:

file:///path/to/project/Base.lproj/Main.storyboard: error: IB Designables: Failed to render and update auto layout status for UIViewController (svZ-78-1Mn): The agent crashed

  • 您可能需要暫時降級到3.7.1,爲例如,
  • pod 'Firebase/Core', '~> 3.7.1' pod 'Firebase/Auth' pod 'Firebase/Database'

    當您運行pod update依賴的其餘部分應該自理。

    +0

    降級到3.7.1爲我解決了它。謝謝! – StephenT

    +0

    降級了,它也適用於我,謝謝! – adarsh

    +0

    @adarsh我花了大量的時間與Firebase支持嘗試解決此問題。他們提供了一個我不滿意的黑客解決方法(包括調整鏈接器標記) - 雖然應用程序會運行,但Cocoapods會抱怨並且單元測試構建不會編譯。我終於嘗試了一個定製的Cocoapod瓦特/ FB的依賴,但似乎不支持Cocoapods(我在這裏提交:https://github.com/CocoaPods/CocoaPods/issues/6138)。我的最終決心讓我感到很痛苦,但我會直接將我的框架代碼包含在App目標中,直到我們的問題得到合理解決。 – Cameron

    1

    我懷疑Podfile不正確。我鑽進了類似的問題,通過增加火力地堡的依賴到了一個框架,我遇到了這樣的

    objc問題[12345]:類FIRAAppEnvironmentUtil在兩個 實施/Users/...Build/Products/Debug- iphonesimulator/SomeFramework.framework/SomeFramework (0x105ef7fc8)和/Users/.../CurrentProject.app/CurrentProject (0x105945108)。將使用兩者之一。哪一個是未定義的。

    正如在這個post中提到的,你可能在不同的目標中有重複的依賴關係,這可能會導致像這樣的奇怪的錯誤。將Firebase pod添加到主要目標中,並從框架中刪除Firebase pod,爲我解決了問題。

    +0

    中的問題如果框架取決於吊艙,吊艙必須位於適當的目標中。僅僅將其包含在應用程序目標中是不夠的。 – Cameron

    +0

    我認爲客戶(應用程序)在使用框架時應該使用sdks來避免複雜的依賴關係。根據這個https://github.com/jverkoey/iOS-Framework/issues/46,似乎建議將sdks設置爲應用級別,而不是框架級別。 – adbitx

    1

    我犯了一個愚蠢的錯誤。從未在Google身份驗證 - >登錄Firebase上的Google身份驗證方法中啓用Google