【问题标题】:Problems with Firebase and SwiftUI Live PreviewsFirebase 和 SwiftUI 实时预览的问题
【发布时间】:2020-06-11 20:53:05
【问题描述】:

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

我尝试关注所有这些answer 解决方案和 cmets,但没有成功(该问题有相同的错误,尽管与 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)

【问题讨论】:

  • 您链接的问题与 SwiftUI 无关,并且来自 2017 年。您确定这是正确的问题/答案吗?
  • 你能看到任何错误吗?尝试检查“重试”按钮旁边的“诊断”按钮。

标签: ios firebase swiftui live-preview


【解决方案1】:

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

这里是通过 SPM 安装 firebase 的链接 https://github.com/firebase/firebase-ios-sdk/blob/master/SwiftPackageManager.md

【讨论】:

    【解决方案2】:

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

    这对我有用。

    在 Xcode 11.3 上,我可以通过简单地为我的方案禁用代码覆盖率收集来构建 SwiftUI 预览。上述解决方案不起作用,因为我仍然收到 Firebase 的“failedToBuildDylib”错误。事实上,上述修复似乎根本没有必要,至少就我而言。希望这对某人有所帮助。

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

    【讨论】:

      【解决方案3】:

      现在我必须暂时禁用 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 更新其框架之前没有其他办法。

      【讨论】:

      • 这太疯狂了,因为它还没有修复。现在是 2021 年 1 月。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2021-04-28
      • 1970-01-01
      相关资源
      最近更新 更多