title: Cannot build a project with Flutter and cloud_firestore
body: <p>I've been trying to figure out how to make cloud_firestore plugin for flutter to work but so far, not a single build has completed. I've got many errors each time... I'm trying to build for the iOS iPhoneX simulator</p>
  
  <p>I've followed the instructions of this code lab: <a href="https://codelabs.developers.google.com/codelabs/flutter-firebase/" rel="nofollow noreferrer">https://codelabs.developers.google.com/codelabs/flutter-firebase/</a>
  And I have exactly the same code as in step 9</p>
  
  <p>Here are the errors: </p>
  
  <pre><code>$ flutter run
  Launching lib/main.dart on iPhone X in debug mode...
  Running pod install...                                      10,2s
  Running Xcode clean...                                       1,5s
  Starting Xcode build...                                          
  Xcode build done.                                            2,6s
  Failed to build iOS app
  Error output from Xcode build:
  ↳
      ** BUILD FAILED **
  
  Xcode's output:
  ↳
      === BUILD TARGET gRPC-Core OF PROJECT Pods WITH CONFIGURATION Debug ===
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.2.3/ios/Classes/FirebaseCorePlugin.m:13:17: warning: property 'dictionary' requires method 'dictionary' to be defined - use @dynamic or provide a method implementation in this category [-Wobjc-property-implementation]
      @implementation FIROptions (FLTFirebaseCorePlugin)
                      ^
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.2.3/ios/Classes/FirebaseCorePlugin.m:10:46: note: property declared here
      @property(readonly, nonatomic) NSDictionary *dictionary;
                                                   ^
      1 warning generated.
      === BUILD TARGET cloud_firestore OF PROJECT Pods WITH CONFIGURATION Debug ===
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:5:
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.h:5:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/Flutter.h:37:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterAppDelegate.h:11:
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlugin.h:80:42: warning: 'UIUserNotificationSettings' is only available on iOS 8.0 or newer [-Wunguarded-availability]
          didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings;
                                               ^
      In module 'UIKit' imported from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Target Support Files/cloud_firestore/cloud_firestore-prefix.pch:2:
      /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.3.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIUserNotificationSettings.h:43:12: note: 'UIUserNotificationSettings' has been explicitly marked partial here
      @interface UIUserNotificationSettings : NSObject
                 ^
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:5:
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.h:5:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/Flutter.h:37:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterAppDelegate.h:11:
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlugin.h:79:1: note: annotate 'application:didRegisterUserNotificationSettings:' with an availability attribute to silence this warning
      - (void)application:(UIApplication*)application
      ^
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlugin.h:95:44: warning: 'UIBackgroundFetchResult' is only available on iOS 7.0 or newer [-Wunguarded-availability]
                fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;
                                                 ^
      In module 'UIKit' imported from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Target Support Files/cloud_firestore/cloud_firestore-prefix.pch:2:
      /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.3.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:76:29: note: 'UIBackgroundFetchResult' has been explicitly marked partial here
      typedef NS_ENUM(NSUInteger, UIBackgroundFetchResult) {
                                  ^
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:5:
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.h:5:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/Flutter.h:37:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterAppDelegate.h:11:
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlugin.h:93:1: note: annotate 'application:didReceiveRemoteNotification:fetchCompletionHandler:' with an availability attribute to silence this warning
      - (BOOL)application:(UIApplication*)application
      ^
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:115:45: warning: implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
            @"oldIndex" : [NSNumber numberWithInt:documentChange.oldIndex],
                          ~                       ^~~~~~~~~~~~~~~~~~~~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:116:45: warning: implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
            @"newIndex" : [NSNumber numberWithInt:documentChange.newIndex],
                          ~                       ^~~~~~~~~~~~~~~~~~~~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:160:21: warning: implicit conversion loses integer precision: 'NSUInteger' (aka 'unsigned long') to 'UInt32' (aka 'unsigned int') [-Wshorten-64-to-32]
          [self writeSize:blob.length];
          ~               ^~~~~~~~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:270:7: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            transactions[transactionId] = transaction;
            ^
            self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:277:29: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
                                  transactionResults[transactionId] = doTransactionResult;
                                  ^
                                  self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:284:14: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            return transactionResults[transactionId];
                   ^
                   self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:298:37: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            FIRTransaction *transaction = transactions[transactionId];
                                          ^
                                          self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:322:37: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            FIRTransaction *transaction = transactions[transactionId];
                                          ^
                                          self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:331:37: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            FIRTransaction *transaction = transactions[transactionId];
                                          ^
                                          self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:340:37: warning: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Wimplicit-retain-self]
            FIRTransaction *transaction = transactions[transactionId];
                                          ^
                                          self-&gt;
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:351:26: error: unknown receiver 'FIRSetOptions'; did you mean 'FIROptions'?
                      options:[FIRSetOptions merge]
                               ^~~~~~~~~~~~~
                               FIROptions
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:7:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/Firebase/Firebase.h:1:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h:21:
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h:25:12: note: 'FIROptions' declared here
      @interface FIROptions : NSObject &lt;NSCopying&gt;
                 ^
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:351:40: error: no known class method for selector 'merge'
                      options:[FIRSetOptions merge]
                                             ^~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:350:17: error: no visible @interface for 'FIRDocumentReference' declares the selector 'setData:options:completion:'
            [document setData:call.arguments[@"data"]
             ~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:440:76: error: unknown receiver 'FIRSetOptions'; did you mean 'FIROptions'?
            [batch setData:call.arguments[@"data"] forDocument:document options:[FIRSetOptions merge]];
                                                                                 ^~~~~~~~~~~~~
                                                                                 FIROptions
      In file included from /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:7:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/Firebase/Firebase.h:1:
      In file included from /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h:21:
      /Users/arthurdepasse/Programmation/flutter_cloud_firestore/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h:25:12: note: 'FIROptions' declared here
      @interface FIROptions : NSObject &lt;NSCopying&gt;
                 ^
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:440:90: error: no known class method for selector 'merge'
            [batch setData:call.arguments[@"data"] forDocument:document options:[FIRSetOptions merge]];
                                                                                               ^~~~~
      /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.0+2/ios/Classes/CloudFirestorePlugin.m:440:14: error: no visible @interface for 'FIRWriteBatch' declares the selector 'setData:forDocument:options:'
            [batch setData:call.arguments[@"data"] forDocument:document options:[FIRSetOptions merge]];
             ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      12 warnings and 6 errors generated.
  Could not build the application for the simulator.
  Error launching application on iPhone X.
  </code></pre>
  
  <p>And then here is my flutter doctor output :</p>
  
  <pre><code>$ flutter doctor -v
  [✓] Flutter (Channel beta, v0.3.2, on Mac OS X 10.13.2 17C88, locale fr-FR)
      • Flutter version 0.3.2 at /Users/arthurdepasse/SDKs/flutter_v0.3.1-beta
      • Framework revision 44b7e7d3f4 (3 weeks ago), 2018-04-20 01:02:44 -0700
      • Engine revision 09d05a3891
      • Dart version 2.0.0-dev.48.0.flutter-fe606f890b
  
  [!] Android toolchain - develop for Android devices
      • Android SDK at /Users/arthurdepasse/Library/Android/sdk
      • Android NDK at /Users/arthurdepasse/Library/Android/sdk/ndk-bundle
      ✗ Android SDK is missing command line tools; download from &lt;link removed&gt;
      • Try re-installing or updating your Android SDK,
        visit https://flutter.io/setup/#android-setup for detailed instructions.
  
  [✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
      • Xcode at /Applications/Xcode.app/Contents/Developer
      • Xcode 9.3, Build version 9E145
      • ios-deploy 1.9.2
      • CocoaPods version 1.5.0
  
  [✓] Android Studio (version 3.0)
      • Android Studio at /Applications/Android Studio.app/Contents
      ✗ Flutter plugin not installed; this adds Flutter specific functionality.
      ✗ Dart plugin not installed; this adds Dart specific functionality.
      • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
  
  [✓] VS Code (version 1.23.0)
      • VS Code at /Applications/Visual Studio Code.app/Contents
      • Dart Code extension version 2.12.1
  
  [✓] Connected devices (1 available)
      • iPhone X • 1295166F-AF96-4DA3-9D82-4172A0F9C55A • ios • iOS 11.3 (simulator)
  
  ! Doctor found issues in 1 category.
  </code></pre>
  
  <p>I hope someone will have some insight on this, I'm not very familiar with the pods system but I believe the issue comes from here.</p>