Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problems with Firebase and SwiftUI Live Previews

Since I added Firebase to my project Live Previews no longer work. Regular builds do work, just no live previews.

I tried following all of this answer solutions and comments with no luck (that question has the same errors although unrelated to SwiftUI).

Diagnostics:

linker command failed with exit code 1 (use -v to see invocation)


LinkDylibError: Failed to build UserViews.swift

Linking failed: linker command failed with exit code 1 (use -v to see invocation)

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)
like image 839
Rivera Avatar asked Feb 27 '20 19:02

Rivera


Video Answer


2 Answers

Try Disable Code Coverage for the scheme.

This worked for me.

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.

Credits to: https://twitter.com/dannypier/status/1190312160557068293

like image 99
ikarishinjigao Avatar answered Sep 19 '22 15:09

ikarishinjigao


For now I have to temporarily disable Firebase (and GoogleSignIn) to work with SwiftUI's Live Previews.

In my case I use Cocoapods, so I comment out the libraries from my Podfile:

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

Then $ pod install to temporarily remove them.

And finally use #if canImport(Firebase) (and #if canImport(GoogleSignIn)) preprocessor macros where needed.

#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

Not optimal, but until Xcode 12 fixes it or Google updates its frameworks no other way around it.

like image 35
Rivera Avatar answered Sep 21 '22 15:09

Rivera