This page introduces and provides instructions for an experimental Firebase Carthage distribution. Based on feedback and usage, the Firebase team may decide to make the Carthage distribution official.
Please let us know if you have suggestions or questions.
Homebrew is one way to install Carthage.
$ brew update $ brew install carthage
See the Carthage page for more details and additional installation methods.
- Create a Cartfile with a subset of the following components - choosing the Firebase components that you want to include in your app. Note that FirebaseAnalyticsBinary must always be included.
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseABTestingBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDatabaseBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDynamicLinksBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFunctionsBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseGoogleSignInBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseInAppMessagingBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseInAppMessagingDisplayBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMessagingBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLModelInterpreterBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLNLLanguageIDBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLNLSmartReplyBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLNLTranslateBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLNaturalLanguageBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionAutoMLBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionBarcodeModelBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionFaceModelBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionLabelModelBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionObjectDetectionBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLVisionTextModelBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json" binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseStorageBinary.json"
Use Finder to open
Copy the contents into the top level of your Xcode project and make sure they're added to the right build target(s).
$(OTHER_LDFLAGS) -ObjCflag to "Other Linker Flags" in "Build Settings".
Make sure that the build target(s) includes your project's
GoogleService-Info.plist(how to download config file)
If you're including a Firebase component that has resources, copy its bundles into the Xcode project and make sure they're added to the
Copy Bundle ResourcesBuild Phase :
- For Firestore:
- For FirebaseMLVisionFaceModel:
- For FirebaseMLVisionTextModel:
- For Firestore:
Please note that you shouldn't add the Firebase frameworks to the Carthage build phase (
copy-frameworks). The frameworks contain static libraries that are linked at build time.
Some additional libraries/frameworks may be needed depending on which Firebase frameworks you use, for example: libc++.tbd, sqlite3.tbd, StoreKit.framework, etc. For more information, go here.
Unlike the CocoaPods distribution, the Carthage distribution is like the Firebase zip release in that all the Firebase components share the same version. Mixing and matching components with different versions may cause linker errors.
Note that the Firebase frameworks in the distribution include static libraries. While it is fine to link these into apps, it will generally not work to depend on them from wrapper dynamic frameworks.
Thanks also to those who have already done Firebase Carthage implementations, such as https://github.com/soheilbm/Firebase.