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)
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.