|
| 1 | +# Firebase Rome |
| 2 | + |
| 3 | +## Context |
| 4 | + |
| 5 | +This page introduces and provides instructions for using Firebase via a |
| 6 | +[Rome](https://github.com/CocoaPods/Rome) distribution. Based on |
| 7 | +feedback and usage, the Firebase team may decide to make the Rome |
| 8 | +support official. |
| 9 | + |
| 10 | +Please [let us know](https://github.com/firebase/firebase-ios-sdk/issues) if you |
| 11 | +have suggestions or questions. |
| 12 | + |
| 13 | +## Introduction |
| 14 | + |
| 15 | +Unlike regular CocoaPods, Rome does not touch the Xcode project file. It |
| 16 | +installs and builds all of the frameworks and leaves the project integration to |
| 17 | +you. |
| 18 | + |
| 19 | +As a result, with Rome, the installed frameworks are all binary whether the |
| 20 | +CocoaPod itself was source or binary. |
| 21 | + |
| 22 | +In comparison to Carthage, Rome supports subspecs. Therefore, you can install |
| 23 | +exactly the right frameworks customized for your requirements. |
| 24 | + |
| 25 | +## Rome Installation |
| 26 | + |
| 27 | +```bash |
| 28 | +$ gem install cocoapods-rome |
| 29 | +``` |
| 30 | + |
| 31 | +## Firebase Installation |
| 32 | + |
| 33 | +1. Copy the [template Podfile](Rome/Podfile) to your project directory |
| 34 | +1. Delete any Firebase pods that you don't need |
| 35 | +1. Run `pod install` |
| 36 | +1. With the Finder `open Rome` |
| 37 | +1. Make sure you have an Xcode project open in Xcode. |
| 38 | +1. In Xcode, hit `⌘-1` to open the Project Navigator pane. It will open on |
| 39 | + left side of the Xcode window if it wasn't already open. |
| 40 | +1. Drag each framework from the Finder window into Project |
| 41 | + Navigator pane. In the dialog box that appears, make sure the target you |
| 42 | + want the framework to be added to has a checkmark next to it, and that |
| 43 | + you've selected "Copy items if needed". |
| 44 | +1. Find the dynamic frameworks: In a shell type: |
| 45 | + `file Rome/*/* | grep universal | grep dynamic` |
| 46 | +1. Drag each dynamic framework to the "Embed Frameworks" section on the |
| 47 | + Xcode Build Target's "General" page. |
| 48 | +1. If you're using FirebaseML, FirebaseInAppMessaging, FirebaseFirestore, or |
| 49 | + FirebaseInvites, find |
| 50 | + the resources to the project: `ls -ld Pods/*/Resources/*`. More details on |
| 51 | + this below. |
| 52 | +1. Drag all of those resources into the Project Navigator, just |
| 53 | + like the frameworks, again making sure that the target you want to add these |
| 54 | + resources to has a checkmark next to it, and that you've selected "Copy items |
| 55 | + if needed". |
| 56 | +1. Add the -ObjC flag to "Other Linker Settings": |
| 57 | + a. In your project settings, open the Settings panel for your target |
| 58 | + b. Go to the Build Settings tab and find the "Other Linker Flags" setting |
| 59 | + in the Linking section. |
| 60 | + c. Double-click the setting, click the '+' button, and add "-ObjC" (without |
| 61 | + quotes) |
| 62 | +1. Add Firebase.h and module support: |
| 63 | + a. In your project settings, open the Settings panel for your target |
| 64 | + b. Go to the Build Settings tab and find the "User Header Search Paths" |
| 65 | + setting in the Search Paths section. |
| 66 | + c. Double-click the setting, click the '+' button, and add |
| 67 | + `Pods/Firebase/CoreOnly/Sources` |
| 68 | +1. Make sure that the build target(s) includes your project's |
| 69 | + `GoogleService-Info.plist` |
| 70 | + ([how to download config file](https://support.google.com/firebase/answer/7015592)). |
| 71 | +1. You're done! Compile your target and start using Firebase. |
| 72 | + |
| 73 | +## Firebase Resource Details |
| 74 | +- If you're including a Firebase component that has resources, copy its bundles |
| 75 | + into the Xcode project and make sure they're added to the |
| 76 | + `Copy Bundle Resources` Build Phase : |
| 77 | + - For Firestore: |
| 78 | + - ./Rome/GRPCClient.framework/gRPCCertificates.bundle |
| 79 | + - For InAppMessagingDisplay: |
| 80 | + - ./Rome/FirebaseInAppMessagingDisplay.framework/InAppMessagingDisplayResources.bundle |
| 81 | + - For Invites: |
| 82 | + - ./Pods/FirebaseInvites/Resources/GINInviteResources.bundle |
| 83 | + - ./Pods/FirebaseInvites/Resources/GPPACLPickerResources.bundle |
| 84 | + - ./Pods/GoogleSignIn/Resources/GoogleSignIn.bundle |
| 85 | + - For FirebaseMLVisionFaceModel: |
| 86 | + - ./Pods/GoogleMobileVision/FaceDetector/Resources/GoogleMVFaceDetectorResources |
| 87 | + - For FirebaseMLVisionTextModel: |
| 88 | + - ./Pods/GoogleMobileVision/TextDetector/Resources/GoogleMVTextDetectorResources |
| 89 | +- For the FirebaseML resources, a bundle needs to be created. TBD better |
| 90 | + instructions here. |
0 commit comments