Firebase 和 SwiftUI 实时预览的问题

Problems with Firebase and SwiftUI Live Previews

自从我将 Firebase 添加到我的项目后,实时预览不再有效。常规构建确实有效,只是没有实时预览。

我尝试遵循所有这些 解决方案和评论,但没有成功(该问题有相同的错误,尽管与 SwiftUI 无关)。

诊断:

链接器命令失败,退出代码为 1(使用 -v 查看调用)


LinkDylibError:构建失败UserViews.swift

链接失败:链接器命令失败,退出代码为 1(使用 -v 查看调用)

ld: warning: directory not found for option '-F/Applications/Xcode.app/Contents/SharedFrameworks-iphonesimulator'
Undefined symbols for architecture x86_64:
  "___llvm_profile_runtime", referenced from:
      ___llvm_profile_runtime_user in FirebaseCore(FIRAppAssociationRegistration.o)
      ___llvm_profile_runtime_user in FirebaseCore(FIRComponentType.o)
      ___llvm_profile_runtime_user in FirebaseCore(FIRConfiguration.o)
      ___llvm_profile_runtime_user in FirebaseCore(FIRCoreDiagnosticsConnector.o)
      ___llvm_profile_runtime_user in FirebaseCore(FIRDiagnosticsData.o)
      ___llvm_profile_runtime_user in FirebaseCore(FirebaseCore-dummy.o)
      ___llvm_profile_runtime_user in FirebaseCore(FIROptions.o)
      ...
     (maybe you meant: ___llvm_profile_runtime_user)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

现在我必须暂时禁用 Firebase(和 GoogleSignIn)才能使用 SwiftUI 的实时预览。

在我的例子中,我使用 Cocoapods,所以我从我的 Podfile 中注释掉了这些库:

#  pod 'Firebase/Analytics'
#  pod 'Firebase/Crashlytics'
#  pod 'Firebase/Messaging'
#  pod 'GoogleSignIn'

然后 $ pod install 暂时删除它们。

最后在需要的地方使用 #if canImport(Firebase)(和 #if canImport(GoogleSignIn))预处理器宏。

#if canImport(Firebase)
import Firebase
#endif
#if canImport(GoogleSignIn)
import GoogleSignIn
#endif

// ...

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
{
    // ...

    #if canImport(Firebase)
    FirebaseApp.configure()
    #endif

不是最优的,但直到 Xcode 12 修复它或 Google 更新它的框架,没有其他办法解决它。

尝试禁用方案的代码覆盖率

这对我有用。

On Xcode 11.3 I've been able to get SwiftUI Previews building by simply disabling Code Coverage gathering for my scheme. The above solutions weren't working as I was still getting "failedToBuildDylib" errors for Firebase. In fact, the above fixes don't seem to be necessary at all, at least on my case. Hope this helps someone.

感谢:https://twitter.com/dannypier/status/1190312160557068293

使用 SPM 安装 firebase(使用 beta 分支,因为直到现在它仍然是 beta)并删除 CocoPods .. 预览将再次完美运行

这里是 link 用于通过 SPM 安装 firebase https://github.com/firebase/firebase-ios-sdk/blob/master/SwiftPackageManager.md