在Podfile中包含Firebase/Auth时,EXC_BAD_ACCESS代码= 2

问题描述:

在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

最新的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

  1. 您可能需要暂时降级到3.7.1,为例如,
  2. pod 'Firebase/Core', '~> 3.7.1' pod 'Firebase/Auth' pod 'Firebase/Database'

    当您运行pod update依赖的其余部分应该自理。

开始=“2”>
+0

降级到3.7.1为我解决了它。谢谢! – StephenT

+0

降级了,它也适用于我,谢谢! – adarsh

+0

@adarsh我花了大量的时间与Firebase支持尝试解决此问题。他们提供了一个我不满意的黑客解决方法(包括调整链接器标记) - 虽然应用程序会运行,但Cocoapods会抱怨并且单元测试构建不会编译。我终于尝试了一个定制的Cocoapod瓦特/ FB的依赖,但似乎不支持Cocoapods(我在这里提交:https://github.com/CocoaPods/CocoaPods/issues/6138)。我的最终决心让我感到很痛苦,但我会直接将我的框架代码包含在App目标中,直到我们的问题得到合理解决。 – Cameron

我怀疑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

我犯了一个愚蠢的错误。从未在Google身份验证 - >登录Firebase上的Google身份验证方法中启用Google