Fix version conflicts, verify publishability of packages in CI, Remove Travis (#729)

This fixes a number of version resolution errors that would prevent these packages from building, and turn off Travis, since Cirrus now works.

I also fixed a number of errors that would have prevented these packages from being published without warnings, and establishes a CI script that will verify publishability for any changed packages in a PR.

For some examples, we were depending upon versions of other 1st-party plugins by using path: ../../<package>, which really isn't the right way to do things, so for those examples, they now depend on a published version.

I bumped the version number of any packages that were modified, and updated their CHANGELOGs since the dependencies have changed.

Also fixed a number of analyzer errors that somehow snuck in.
diff --git a/.cirrus.yml b/.cirrus.yml
index 3226ab5..e0093bb 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,11 +1,16 @@
 task:
   container:
     image: cirrusci/flutter:latest
+    cpu: 4
+    memory: 8G
   upgrade_script:
     - flutter channel master
     - flutter upgrade
+    - git fetch origin master
   activate_script: pub global activate flutter_plugin_tools
   matrix:
+    - name: publishable
+      script: ./script/check_publish.sh
     - name: test+format
       install_script:
         - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
@@ -41,6 +46,7 @@
     - brew install ios-deploy
     - pod repo update
     - git clone https://github.com/flutter/flutter.git
+    - git fetch origin master
     - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
     - flutter doctor
     - pub global activate flutter_plugin_tools
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 55ae6b9..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-matrix:
-  include:
-    # Job 1) Run analyzer
-    - os: linux
-      env:
-        - SHARD=Analyze
-      sudo: false
-      addons:
-        apt:
-          # Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
-          sources:
-            - ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
-          packages:
-            - libstdc++6
-            - fonts-droid
-      before_script:
-        - git clone https://github.com/flutter/flutter.git
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-        - flutter doctor
-        - pub global activate flutter_plugin_tools
-      script:
-        - ./script/incremental_build.sh analyze
-    # Job 2) Check format and run tests
-    - os: linux
-      env:
-        - SHARD=Format+Test
-      jdk: oraclejdk8
-      sudo: false
-      addons:
-        apt:
-          # Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
-          sources:
-            - ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
-            - llvm-toolchain-precise # for clang-format-5.0
-          packages:
-            - libstdc++6
-            - fonts-droid
-            - clang-format-5.0
-      before_script:
-        - git clone https://github.com/flutter/flutter.git
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-        - flutter doctor
-        - pub global activate flutter_plugin_tools
-      script:
-        - ./script/incremental_build.sh format --travis --clang-format=clang-format-5.0
-        - ./script/incremental_build.sh test
-    # Job 3.1) Build example APKs and run Java tests, shard 1/2
-    - os: linux
-      env:
-        - SHARD="Build example apks 1/2"
-        - PLUGIN_SHARDING="--shardIndex 0 --shardCount 2"
-      jdk: oraclejdk8
-      sudo: false
-      addons:
-        apt:
-          # Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
-          sources:
-            - ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
-          packages:
-            - lib32stdc++6 # https://github.com/flutter/flutter/issues/6207
-            - libstdc++6
-            - fonts-droid
-      before_script:
-        - ./script/before_build_apks.sh
-        - export ANDROID_HOME=`pwd`/android-sdk
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-      script:
-        - ./script/incremental_build.sh build-examples --apk
-        - ./script/incremental_build.sh java-test  # must come after apk build
-    # Job 3.2) Build example APKs and run Java tests, shard 2/2
-    - os: linux
-      env:
-        - SHARD="Build example apks 2/2"
-        - PLUGIN_SHARDING="--shardIndex 1 --shardCount 2"
-      jdk: oraclejdk8
-      sudo: false
-      addons:
-        apt:
-          # Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
-          sources:
-            - ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
-          packages:
-            - lib32stdc++6 # https://github.com/flutter/flutter/issues/6207
-            - libstdc++6
-            - fonts-droid
-      before_script:
-        - ./script/before_build_apks.sh
-        - export ANDROID_HOME=`pwd`/android-sdk
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-      script:
-        - ./script/incremental_build.sh build-examples --apk
-        - ./script/incremental_build.sh java-test  # must come after apk build
-    # Job 4.1) Build example IPAs, shard 1/2
-    - os: osx
-      env:
-        - SHARD="Build example ipas 1/2"
-        - PLUGIN_SHARDING="--shardIndex 0 --shardCount 2"
-      language: generic
-      osx_image: xcode9.3
-      before_script:
-        - ./script/before_build_ipas.sh
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-      script:
-        - ./script/incremental_build.sh build-examples --ipa
-    # Job 4.2) Build example IPAs, shard 2/2
-    - os: osx
-      env:
-        - SHARD="Build example ipas 2/2"
-        - PLUGIN_SHARDING="--shardIndex 1 --shardCount 2"
-      language: generic
-      osx_image: xcode9.3
-      before_script:
-        - ./script/before_build_ipas.sh
-        - export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-      script:
-        - ./script/incremental_build.sh build-examples --ipa
-
-cache:
-  directories:
-    - $HOME/.pub-cache
diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md
index 18a35a4..54a4b6a 100644
--- a/packages/android_alarm_manager/CHANGELOG.md
+++ b/packages/android_alarm_manager/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.2.1
+* Update dependencies for example to point to published versions of firebase_auth
+  and google_sign_in.
+* Add missing dependency on firebase_auth.1
+
 ## 0.2.0
 
 * **Breaking change**. A new isolate is always spawned for the background service
diff --git a/packages/android_alarm_manager/example/pubspec.yaml b/packages/android_alarm_manager/example/pubspec.yaml
index fb36b98..a338613 100644
--- a/packages/android_alarm_manager/example/pubspec.yaml
+++ b/packages/android_alarm_manager/example/pubspec.yaml
@@ -6,10 +6,9 @@
     sdk: flutter
   android_alarm_manager:
     path: ../
-  firebase_auth:
-    path: ../../firebase_auth
-  google_sign_in:
-    path: ../../google_sign_in
+  firebase_auth: ^0.5.18
+  google_sign_in: ^3.0.4
+
 dev_dependencies:
   flutter_test:
     sdk: flutter
diff --git a/packages/android_alarm_manager/pubspec.yaml b/packages/android_alarm_manager/pubspec.yaml
index 1eea46c..169045b 100644
--- a/packages/android_alarm_manager/pubspec.yaml
+++ b/packages/android_alarm_manager/pubspec.yaml
@@ -1,11 +1,12 @@
 name: android_alarm_manager
 description: Flutter plugin for accessing the Android AlarmManager service, and
   running Dart code in the background when alarms fire.
-version: 0.2.0
+version: 0.2.1
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager
 
 dependencies:
+  firebase_auth: ^0.5.18
   flutter:
     sdk: flutter
 
diff --git a/packages/battery/CHANGELOG.md b/packages/battery/CHANGELOG.md
index 266e75d..334c985 100644
--- a/packages/battery/CHANGELOG.md
+++ b/packages/battery/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.2.3
+
+* Updated mockito dependency to 3.0.0 to get Dart 2 support.
+* Update test package dependency to 1.3.0, and fixed tests to match.
+
 ## 0.2.2
 
 * Updated Gradle tooling to match Android Studio 3.1.2.
diff --git a/packages/battery/pubspec.yaml b/packages/battery/pubspec.yaml
index a90a505..a39aa96 100644
--- a/packages/battery/pubspec.yaml
+++ b/packages/battery/pubspec.yaml
@@ -3,7 +3,7 @@
   (full, charging, discharging) on Android and iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/battery
-version: 0.2.2
+version: 0.2.3
 
 flutter:
   plugin:
@@ -14,10 +14,12 @@
 dependencies:
   flutter:
     sdk: flutter
-  meta: "^1.0.5"
+  meta: ^1.0.5
 
 dev_dependencies:
-  mockito: "^2.0.2"
+  async: ^2.0.8
+  test: ^1.3.0
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/battery/test/battery_test.dart b/packages/battery/test/battery_test.dart
index b8f54e6..3675b28 100644
--- a/packages/battery/test/battery_test.dart
+++ b/packages/battery/test/battery_test.dart
@@ -23,7 +23,7 @@
 
   test('batteryLevel', () async {
     when(methodChannel.invokeMethod('getBatteryLevel'))
-        .thenReturn(new Future<int>.value(42));
+        .thenAnswer((Invocation invoke) => new Future<int>.value(42));
     expect(await battery.batteryLevel, 42);
   });
 
@@ -32,7 +32,8 @@
 
     setUp(() {
       controller = new StreamController<String>();
-      when(eventChannel.receiveBroadcastStream()).thenReturn(controller.stream);
+      when(eventChannel.receiveBroadcastStream())
+          .thenAnswer((Invocation invoke) => controller.stream);
     });
 
     tearDown(() {
diff --git a/packages/camera/CHANGELOG.md b/packages/camera/CHANGELOG.md
index b91d492..2fa2b1a 100644
--- a/packages/camera/CHANGELOG.md
+++ b/packages/camera/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.2.3
+
+* Added path_provider and video_player as dev dependencies because the example uses them.
+* Updated example path_provider version to get Dart 2 support.
+
 ## 0.2.2
 
 * iOS image capture is done in high quality (full camera size)
diff --git a/packages/camera/example/pubspec.yaml b/packages/camera/example/pubspec.yaml
index 2940207..d972e3e 100644
--- a/packages/camera/example/pubspec.yaml
+++ b/packages/camera/example/pubspec.yaml
@@ -1,13 +1,14 @@
 name: camera_example
 description: Demonstrates how to use the camera plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
-  path_provider: 0.3.0
-  flutter:
-    sdk: flutter
   camera:
     path: ../
-  video_player: "0.5.2"
+  path_provider: ^0.4.1
+  flutter:
+    sdk: flutter
+  video_player: ^0.5.2
 
 dev_dependencies:
   flutter_test:
diff --git a/packages/camera/pubspec.yaml b/packages/camera/pubspec.yaml
index 93ca3eb..9e36993 100644
--- a/packages/camera/pubspec.yaml
+++ b/packages/camera/pubspec.yaml
@@ -1,7 +1,7 @@
 name: camera
 description: A Flutter plugin for getting information about and controlling the
   camera on Android and iOS. Supports previewing the camera feed and capturing images.
-version: 0.2.2
+version: 0.2.3
 authors:
   - Flutter Team <flutter-dev@googlegroups.com>
   - Luigi Agosti <luigi@tengio.com>
@@ -15,6 +15,10 @@
   flutter:
     sdk: flutter
 
+dev_dependencies:
+  path_provider: ^0.4.1
+  video_player: ^0.5.2
+
 flutter:
   plugin:
     androidPackage: io.flutter.plugins.camera
diff --git a/packages/cloud_functions/CHANGELOG.md b/packages/cloud_functions/CHANGELOG.md
index b20b302..d32a53f 100644
--- a/packages/cloud_functions/CHANGELOG.md
+++ b/packages/cloud_functions/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.0.3
+
+* Added missing dependency on meta package.
+
 ## 0.0.2
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/cloud_functions/example/pubspec.yaml b/packages/cloud_functions/example/pubspec.yaml
index 13bc792..3fa7a7a 100644
--- a/packages/cloud_functions/example/pubspec.yaml
+++ b/packages/cloud_functions/example/pubspec.yaml
@@ -1,67 +1,19 @@
 name: cloud_functions_example
 description: Demonstrates how to use the cloud_functions plugin.
-
-# The following defines the version and build number for your application.
-# A version number is three numbers separated by dots, like 1.2.43
-# followed by an optional build number separated by a +.
-# Both the version and the builder number may be overridden in flutter
-# build by specifying --build-name and --build-number, respectively.
-# Read more about versioning at semver.org.
 version: 1.0.0+1
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
   flutter:
     sdk: flutter
-
-  # The following adds the Cupertino Icons font to your application.
-  # Use with the CupertinoIcons class for iOS style icons.
   cupertino_icons: ^0.1.2
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-
   cloud_functions:
-    path: ../
+    path: ..
 
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
-
-# The following section is specific to Flutter.
 flutter:
-
-  # The following line ensures that the Material Icons font is
-  # included with your application, so that you can use the icons in
-  # the material Icons class.
   uses-material-design: true
 
-  # To add assets to your application, add an assets section, like this:
-  # assets:
-  #  - images/a_dot_burr.jpeg
-  #  - images/a_dot_ham.jpeg
-
-  # An image asset can refer to one or more resolution-specific "variants", see
-  # https://flutter.io/assets-and-images/#resolution-aware.
-
-  # For details regarding adding assets from package dependencies, see
-  # https://flutter.io/assets-and-images/#from-packages
-
-  # To add custom fonts to your application, add a fonts section here,
-  # in this "flutter" section. Each entry in this list should have a
-  # "family" key with the font family name, and a "fonts" key with a
-  # list giving the asset and other descriptors for the font. For
-  # example:
-  # fonts:
-  #   - family: Schyler
-  #     fonts:
-  #       - asset: fonts/Schyler-Regular.ttf
-  #       - asset: fonts/Schyler-Italic.ttf
-  #         style: italic
-  #   - family: Trajan Pro
-  #     fonts:
-  #       - asset: fonts/TrajanPro.ttf
-  #       - asset: fonts/TrajanPro_Bold.ttf
-  #         weight: 700
-  #
-  # For details regarding fonts from package dependencies,
-  # see https://flutter.io/custom-fonts/#from-packages
diff --git a/packages/cloud_functions/example/test/widget_test.dart b/packages/cloud_functions/example/test/widget_test.dart
index f93cecb..181a974 100644
--- a/packages/cloud_functions/example/test/widget_test.dart
+++ b/packages/cloud_functions/example/test/widget_test.dart
@@ -7,7 +7,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:cloud_functions_example/main.dart';
+import '../lib/main.dart';
 
 void main() {
   testWidgets('Verify Response', (WidgetTester tester) async {
diff --git a/packages/cloud_functions/pubspec.yaml b/packages/cloud_functions/pubspec.yaml
index e8c1406..b154f62 100644
--- a/packages/cloud_functions/pubspec.yaml
+++ b/packages/cloud_functions/pubspec.yaml
@@ -1,6 +1,6 @@
 name: cloud_functions
 description: Flutter plugin for Cloud Functions.
-version: 0.0.2
+version: 0.0.3
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/cloud_functions
 
@@ -10,9 +10,10 @@
     pluginClass: CloudFunctionsPlugin
 
 dependencies:
+  meta: ^1.1.6
   flutter:
     sdk: flutter
-  firebase_core: "^0.2.2"
+  firebase_core: ^0.2.2
 
 dev_dependencies:
   flutter_test:
diff --git a/packages/firebase_admob/CHANGELOG.md b/packages/firebase_admob/CHANGELOG.md
index fc7f91b..d84ba26 100644
--- a/packages/firebase_admob/CHANGELOG.md
+++ b/packages/firebase_admob/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.5.7
+
+* Bumped mockito dependency to pick up Dart 2 support.
+
 ## 0.5.6
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_admob/pubspec.yaml b/packages/firebase_admob/pubspec.yaml
index ef57405..090e858 100644
--- a/packages/firebase_admob/pubspec.yaml
+++ b/packages/firebase_admob/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Firebase AdMob plugin for Flutter applications.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_admob
-version: 0.5.6
+version: 0.5.7
 
 flutter:
   plugin:
@@ -17,7 +17,7 @@
     sdk: flutter
 
 dev_dependencies:
-  mockito: ^2.0.2
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_analytics/CHANGELOG.md b/packages/firebase_analytics/CHANGELOG.md
index 94d77ef..fef529c 100644
--- a/packages/firebase_analytics/CHANGELOG.md
+++ b/packages/firebase_analytics/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.3
+
+* Updated test and mockito dependencies to pick up Dart 2 support
+
 ## 1.0.2
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_analytics/pubspec.yaml b/packages/firebase_analytics/pubspec.yaml
index fdb338c..11a270a 100755
--- a/packages/firebase_analytics/pubspec.yaml
+++ b/packages/firebase_analytics/pubspec.yaml
@@ -3,7 +3,7 @@
   solution that provides insight on app usage and user engagement on Android and iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_analytics
-version: 1.0.2
+version: 1.0.3
 
 flutter:
   plugin:
@@ -17,7 +17,8 @@
     sdk: flutter
 
 dev_dependencies:
-  mockito: ^2.0.2
+  test: ^1.3.0
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_analytics/test/firebase_analytics_test.dart b/packages/firebase_analytics/test/firebase_analytics_test.dart
index 6df3081..9f2d705 100755
--- a/packages/firebase_analytics/test/firebase_analytics_test.dart
+++ b/packages/firebase_analytics/test/firebase_analytics_test.dart
@@ -39,10 +39,11 @@
       invokedMethod = null;
       arguments = null;
 
-      when(mockChannel.invokeMethod(typed(any), any))
+      when(mockChannel.invokeMethod(any, any))
           .thenAnswer((Invocation invocation) {
         invokedMethod = invocation.positionalArguments[0];
         arguments = invocation.positionalArguments[1];
+        return Future<void>.value();
       });
 
       analytics = new FirebaseAnalytics.private(mockChannel);
@@ -130,9 +131,10 @@
         name = args['name'];
         parameters = args['parameters'];
         expect(args.keys, unorderedEquals(<String>['name', 'parameters']));
+        return Future<void>.value();
       });
 
-      when(mockChannel.invokeMethod(typed(argThat(isNot('logEvent'))), any))
+      when(mockChannel.invokeMethod(argThat(isNot('logEvent')), any))
           .thenThrow(new ArgumentError('Only logEvent invocations expected'));
 
       analytics = new FirebaseAnalytics.private(mockChannel);
diff --git a/packages/firebase_auth/CHANGELOG.md b/packages/firebase_auth/CHANGELOG.md
index f048af7..7cfc3f0 100644
--- a/packages/firebase_auth/CHANGELOG.md
+++ b/packages/firebase_auth/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.5.19
+
+* Update test package dependency to pick up Dart 2 support.
+* Modified dependency on google_sign_in to point to a published
+  version instead of a relative path.
+
 ## 0.5.18
 
 * Adding support for updateEmail in FirebaseAuth.
diff --git a/packages/firebase_auth/example/pubspec.yaml b/packages/firebase_auth/example/pubspec.yaml
index 5c79b48..d55666c 100755
--- a/packages/firebase_auth/example/pubspec.yaml
+++ b/packages/firebase_auth/example/pubspec.yaml
@@ -1,13 +1,13 @@
 name: firebase_auth_example
 description: Demonstrates how to use the firebase_auth plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
   flutter:
     sdk: flutter
   firebase_auth:
     path: ../
-  google_sign_in:
-    path: ../../google_sign_in
+  google_sign_in: ^3.0.4
 
 flutter:
   uses-material-design: true
diff --git a/packages/firebase_auth/pubspec.yaml b/packages/firebase_auth/pubspec.yaml
index f7adf0e..3205a9e 100755
--- a/packages/firebase_auth/pubspec.yaml
+++ b/packages/firebase_auth/pubspec.yaml
@@ -4,7 +4,7 @@
   like Google, Facebook and Twitter.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_auth
-version: 0.5.18
+version: 0.5.19
 
 flutter:
   plugin:
@@ -18,6 +18,8 @@
     sdk: flutter
 
 dev_dependencies:
+  google_sign_in: ^3.0.4
+  test: ^1.3.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_database/CHANGELOG.md b/packages/firebase_database/CHANGELOG.md
index 6a57003..05c01ba 100644
--- a/packages/firebase_database/CHANGELOG.md
+++ b/packages/firebase_database/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.4
+
+* Bumped test and mockito versions to pick up Dart 2 support.
+
 ## 1.0.3
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_database/pubspec.yaml b/packages/firebase_database/pubspec.yaml
index 6193f5d..0a502ec 100755
--- a/packages/firebase_database/pubspec.yaml
+++ b/packages/firebase_database/pubspec.yaml
@@ -3,7 +3,7 @@
   with realtime data syncing across Android and iOS clients, and offline access.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_database
-version: 1.0.3
+version: 1.0.4
 
 flutter:
   plugin:
@@ -17,7 +17,8 @@
   firebase_core: ^0.2.2
 
 dev_dependencies:
-  mockito: ^2.0.2
+  test: ^1.3.0
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_messaging/CHANGELOG.md b/packages/firebase_messaging/CHANGELOG.md
index bf95d6a..47ba431 100644
--- a/packages/firebase_messaging/CHANGELOG.md
+++ b/packages/firebase_messaging/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.5
+
+* Bumped test and mockito versions to pick up Dart 2 support.
+
 ## 1.0.4
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_messaging/pubspec.yaml b/packages/firebase_messaging/pubspec.yaml
index 2affe4f..6e53731 100644
--- a/packages/firebase_messaging/pubspec.yaml
+++ b/packages/firebase_messaging/pubspec.yaml
@@ -3,7 +3,7 @@
   messaging solution that lets you reliably deliver messages on Android and iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_messaging
-version: 1.0.4
+version: 1.0.5
 
 flutter:
   plugin:
@@ -18,7 +18,8 @@
     sdk: flutter
 
 dev_dependencies:
-  mockito: ^2.0.2
+  test: ^1.3.0
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_messaging/test/firebase_messaging_test.dart b/packages/firebase_messaging/test/firebase_messaging_test.dart
index ff5d104..37f9ccb 100644
--- a/packages/firebase_messaging/test/firebase_messaging_test.dart
+++ b/packages/firebase_messaging/test/firebase_messaging_test.dart
@@ -51,16 +51,14 @@
 
   test('configure', () {
     firebaseMessaging.configure();
-    verify(mockChannel.setMethodCallHandler(typed(any)));
+    verify(mockChannel.setMethodCallHandler(any));
     verify(mockChannel.invokeMethod('configure'));
   });
 
   test('incoming token', () async {
     firebaseMessaging.configure();
     final dynamic handler =
-        verify(mockChannel.setMethodCallHandler(typed(captureAny)))
-            .captured
-            .single;
+        verify(mockChannel.setMethodCallHandler(captureAny)).captured.single;
     final String token1 = 'I am a super secret token';
     final String token2 = 'I am the new token in town';
     Future<String> tokenFromStream = firebaseMessaging.onTokenRefresh.first;
@@ -79,9 +77,7 @@
   test('incoming iOS settings', () async {
     firebaseMessaging.configure();
     final dynamic handler =
-        verify(mockChannel.setMethodCallHandler(typed(captureAny)))
-            .captured
-            .single;
+        verify(mockChannel.setMethodCallHandler(captureAny)).captured.single;
     IosNotificationSettings iosSettings = const IosNotificationSettings();
 
     Future<IosNotificationSettings> iosSettingsFromStream =
@@ -110,9 +106,7 @@
       onResume.complete(m);
     });
     final dynamic handler =
-        verify(mockChannel.setMethodCallHandler(typed(captureAny)))
-            .captured
-            .single;
+        verify(mockChannel.setMethodCallHandler(captureAny)).captured.single;
 
     final Map<String, dynamic> onMessageMessage = <String, dynamic>{};
     final Map<String, dynamic> onLaunchMessage = <String, dynamic>{};
diff --git a/packages/firebase_ml_vision/CHANGELOG.md b/packages/firebase_ml_vision/CHANGELOG.md
index adc99fa..dcd9233 100644
--- a/packages/firebase_ml_vision/CHANGELOG.md
+++ b/packages/firebase_ml_vision/CHANGELOG.md
@@ -1,6 +1,10 @@
+## 0.1.2
+
+* Fix example imports so that publishing will be warning-free.
+
 ## 0.1.1
 
-Set pod version of Firebase/MLVision to avoid breaking changes.
+* Set pod version of Firebase/MLVision to avoid breaking changes.
 
 ## 0.1.0
 
diff --git a/packages/firebase_ml_vision/example/lib/main.dart b/packages/firebase_ml_vision/example/lib/main.dart
index d375dbd..14e51da 100644
--- a/packages/firebase_ml_vision/example/lib/main.dart
+++ b/packages/firebase_ml_vision/example/lib/main.dart
@@ -6,10 +6,11 @@
 import 'dart:io';
 
 import 'package:firebase_ml_vision/firebase_ml_vision.dart';
-import 'package:firebase_ml_vision_example/detector_painters.dart';
 import 'package:flutter/material.dart';
 import 'package:image_picker/image_picker.dart';
 
+import 'detector_painters.dart';
+
 void main() => runApp(new MaterialApp(home: _MyHomePage()));
 
 class _MyHomePage extends StatefulWidget {
diff --git a/packages/firebase_ml_vision/example/pubspec.yaml b/packages/firebase_ml_vision/example/pubspec.yaml
index 5bf287f..978e90c 100644
--- a/packages/firebase_ml_vision/example/pubspec.yaml
+++ b/packages/firebase_ml_vision/example/pubspec.yaml
@@ -1,13 +1,12 @@
 name: firebase_ml_vision_example
 description: Demonstrates how to use the firebase_ml_vision plugin.
-
-version: 1.0.0+1
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
   flutter:
     sdk: flutter
 
-  image_picker: "^0.4.5"
+  image_picker: ^0.4.5
   cupertino_icons: ^0.1.2
 
 dev_dependencies:
diff --git a/packages/firebase_ml_vision/pubspec.yaml b/packages/firebase_ml_vision/pubspec.yaml
index 23e5e51..733097e 100644
--- a/packages/firebase_ml_vision/pubspec.yaml
+++ b/packages/firebase_ml_vision/pubspec.yaml
@@ -1,15 +1,16 @@
 name: firebase_ml_vision
 description: Flutter plugin for Google ML Vision for Firebase, an SDK that brings Google's machine
   learning expertise to Android and iOS apps in a powerful yet easy-to-use package.
-version: 0.1.1
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_ml_vision
+version: 0.1.2
 
 dependencies:
   flutter:
     sdk: flutter
 
 dev_dependencies:
+  image_picker: ^0.4.5
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_performance/CHANGELOG.md b/packages/firebase_performance/CHANGELOG.md
index 0b867ed..468bf39 100644
--- a/packages/firebase_performance/CHANGELOG.md
+++ b/packages/firebase_performance/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.0.7
+
+* Added missing http package dependency.
+
 ## 0.0.6
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_performance/example/pubspec.yaml b/packages/firebase_performance/example/pubspec.yaml
index 7278f18..014a643 100644
--- a/packages/firebase_performance/example/pubspec.yaml
+++ b/packages/firebase_performance/example/pubspec.yaml
@@ -1,8 +1,9 @@
 name: firebase_performance_example
 description: Demonstrates how to use the firebase_performance plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
-  http: "0.11.3+17"
+  http: 0.11.3+17
   flutter:
     sdk: flutter
 
diff --git a/packages/firebase_performance/pubspec.yaml b/packages/firebase_performance/pubspec.yaml
index 81a753d..f220e46 100644
--- a/packages/firebase_performance/pubspec.yaml
+++ b/packages/firebase_performance/pubspec.yaml
@@ -4,13 +4,14 @@
   iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_performance
-version: 0.0.6
+version: 0.0.7
 
 dependencies:
   flutter:
     sdk: flutter
 
 dev_dependencies:
+  http: 0.11.3+17
   flutter_test:
     sdk: flutter
 
diff --git a/packages/firebase_storage/CHANGELOG.md b/packages/firebase_storage/CHANGELOG.md
index 96169a1..7e8685a 100644
--- a/packages/firebase_storage/CHANGELOG.md
+++ b/packages/firebase_storage/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.2
+
+* Added missing http package dependency.
+
 ## 1.0.1
 
 * Bump Android and Firebase dependency versions.
diff --git a/packages/firebase_storage/example/pubspec.yaml b/packages/firebase_storage/example/pubspec.yaml
index 51c2914..dc6f3c7 100755
--- a/packages/firebase_storage/example/pubspec.yaml
+++ b/packages/firebase_storage/example/pubspec.yaml
@@ -1,5 +1,6 @@
 name: firebase_storage_example
 description: Demonstrates how to use the firebase_storage plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
   flutter:
@@ -8,36 +9,6 @@
     path: ../
   http: ^0.11.3
 
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
-
-# The following section is specific to Flutter.
 flutter:
-
-  # The following line ensures that the Material Icons font is
-  # included with your application, so that you can use the icons in
-  # the Icons class.
   uses-material-design: true
 
-  # To add assets to your application, add an assets section here, in
-  # this "flutter" section, as in:
-  # assets:
-  #  - images/a_dot_burr.jpeg
-  #  - images/a_dot_ham.jpeg
-
-  # To add custom fonts to your application, add a fonts section here,
-  # in this "flutter" section. Each entry in this list should have a
-  # "family" key with the font family name, and a "fonts" key with a
-  # list giving the asset and other descriptors for the font. For
-  # example:
-  # fonts:
-  #   - family: Schyler
-  #     fonts:
-  #       - asset: fonts/Schyler-Regular.ttf
-  #       - asset: fonts/Schyler-Italic.ttf
-  #         style: italic
-  #   - family: Trajan Pro
-  #     fonts:
-  #       - asset: fonts/TrajanPro.ttf
-  #       - asset: fonts/TrajanPro_Bold.ttf
-  #         weight: 700
diff --git a/packages/firebase_storage/pubspec.yaml b/packages/firebase_storage/pubspec.yaml
index dc565af..7c50af9 100755
--- a/packages/firebase_storage/pubspec.yaml
+++ b/packages/firebase_storage/pubspec.yaml
@@ -3,7 +3,7 @@
   cost-effective object storage service for Android and iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_storage
-version: 1.0.1
+version: 1.0.2
 
 flutter:
   plugin:
@@ -17,6 +17,7 @@
   firebase_core: ^0.2.3
 
 dev_dependencies:
+  http: ^0.11.3
   flutter_test:
     sdk: flutter
 
diff --git a/packages/google_sign_in/CHANGELOG.md b/packages/google_sign_in/CHANGELOG.md
index de177a8..5040d7d 100644
--- a/packages/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 3.0.5
+
+* Added missing http package dependency.
+
 ## 3.0.4
 
 * Updated Gradle tooling to match Android Studio 3.1.2.
diff --git a/packages/google_sign_in/pubspec.yaml b/packages/google_sign_in/pubspec.yaml
index aaa5633..c4e7e52 100755
--- a/packages/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/pubspec.yaml
@@ -3,7 +3,7 @@
   for signing in with a Google account on Android and iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in
-version: 3.0.4
+version: 3.0.5
 
 flutter:
   plugin:
@@ -17,6 +17,7 @@
   meta: ^1.0.4
 
 dev_dependencies:
+  http: ^0.11.3
   flutter_test:
     sdk: flutter
 
diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md
index 7a78c2e..a730bbb 100644
--- a/packages/image_picker/CHANGELOG.md
+++ b/packages/image_picker/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.7
+
+* Added missing video_player package dev dependency.
+
 ## 0.4.6
 
 * Added support for picking remote images.
diff --git a/packages/image_picker/example/pubspec.yaml b/packages/image_picker/example/pubspec.yaml
index 8fbf4f4..e8c45e6 100755
--- a/packages/image_picker/example/pubspec.yaml
+++ b/packages/image_picker/example/pubspec.yaml
@@ -1,43 +1,14 @@
 name: image_picker_example
 description: Demonstrates how to use the image_picker plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
-  video_player: "0.5.2"
+  video_player: 0.5.2
   flutter:
     sdk: flutter
   image_picker:
     path: ../
 
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
-
-# The following section is specific to Flutter.
 flutter:
-
-  # The following line ensures that the Material Icons font is
-  # included with your application, so that you can use the icons in
-  # the Icons class.
   uses-material-design: true
 
-  # To add assets to your application, add an assets section here, in
-  # this "flutter" section, as in:
-  # assets:
-  #  - images/a_dot_burr.jpeg
-  #  - images/a_dot_ham.jpeg
-
-  # To add custom fonts to your application, add a fonts section here,
-  # in this "flutter" section. Each entry in this list should have a
-  # "family" key with the font family name, and a "fonts" key with a
-  # list giving the asset and other descriptors for the font. For
-  # example:
-  # fonts:
-  #   - family: Schyler
-  #     fonts:
-  #       - asset: fonts/Schyler-Regular.ttf
-  #       - asset: fonts/Schyler-Italic.ttf
-  #         style: italic
-  #   - family: Trajan Pro
-  #     fonts:
-  #       - asset: fonts/TrajanPro.ttf
-  #       - asset: fonts/TrajanPro_Bold.ttf
-  #         weight: 700
diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml
index cc835ff..44f4679 100755
--- a/packages/image_picker/pubspec.yaml
+++ b/packages/image_picker/pubspec.yaml
@@ -5,7 +5,7 @@
   - Flutter Team <flutter-dev@googlegroups.com>
   - Rhodes Davis Jr. <rody.davis.jr@gmail.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker
-version: 0.4.6
+version: 0.4.7
 
 flutter:
   plugin:
@@ -18,6 +18,7 @@
     sdk: flutter
 
 dev_dependencies:
+  video_player: 0.5.2
   flutter_test:
     sdk: flutter
 
diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md
index d0bd041..371102a 100644
--- a/packages/in_app_purchase/CHANGELOG.md
+++ b/packages/in_app_purchase/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.0.2
+
+* Added missing flutter_test package dependency.
+* Added missing flutter version requirements.
+
 ## 0.0.1
 
 * Initial release.
diff --git a/packages/in_app_purchase/example/pubspec.yaml b/packages/in_app_purchase/example/pubspec.yaml
index 3f41f6f..498050b 100644
--- a/packages/in_app_purchase/example/pubspec.yaml
+++ b/packages/in_app_purchase/example/pubspec.yaml
@@ -1,59 +1,18 @@
 name: in_app_purchase_example
 description: Demonstrates how to use the in_app_purchase plugin.
+author: Flutter Team <flutter-dev@googlegroups.com>
 
 dependencies:
   flutter:
     sdk: flutter
-
-  # The following adds the Cupertino Icons font to your application.
-  # Use with the CupertinoIcons class for iOS style icons.
   cupertino_icons: ^0.1.2
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-
   in_app_purchase:
     path: ../
 
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
-
-# The following section is specific to Flutter.
 flutter:
-
-  # The following line ensures that the Material Icons font is
-  # included with your application, so that you can use the icons in
-  # the material Icons class.
   uses-material-design: true
 
-  # To add assets to your application, add an assets section, like this:
-  # assets:
-  #  - images/a_dot_burr.jpeg
-  #  - images/a_dot_ham.jpeg
-
-  # An image asset can refer to one or more resolution-specific "variants", see
-  # https://flutter.io/assets-and-images/#resolution-aware.
-
-  # For details regarding adding assets from package dependencies, see
-  # https://flutter.io/assets-and-images/#from-packages
-
-  # To add custom fonts to your application, add a fonts section here,
-  # in this "flutter" section. Each entry in this list should have a
-  # "family" key with the font family name, and a "fonts" key with a
-  # list giving the asset and other descriptors for the font. For
-  # example:
-  # fonts:
-  #   - family: Schyler
-  #     fonts:
-  #       - asset: fonts/Schyler-Regular.ttf
-  #       - asset: fonts/Schyler-Italic.ttf
-  #         style: italic
-  #   - family: Trajan Pro
-  #     fonts:
-  #       - asset: fonts/TrajanPro.ttf
-  #       - asset: fonts/TrajanPro_Bold.ttf
-  #         weight: 700
-  #
-  # For details regarding fonts from package dependencies,
-  # see https://flutter.io/custom-fonts/#from-packages
diff --git a/packages/in_app_purchase/example/test/widget_test.dart b/packages/in_app_purchase/example/test/widget_test.dart
index 7571ebd..f0f1b81 100644
--- a/packages/in_app_purchase/example/test/widget_test.dart
+++ b/packages/in_app_purchase/example/test/widget_test.dart
@@ -7,7 +7,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 
-import 'package:in_app_purchase_example/main.dart';
+import '../lib/main.dart';
 
 void main() {
   testWidgets('Verify Platform version', (WidgetTester tester) async {
diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml
index 0d6e4fe..2b0353b 100644
--- a/packages/in_app_purchase/pubspec.yaml
+++ b/packages/in_app_purchase/pubspec.yaml
@@ -2,13 +2,22 @@
 description: A Flutter plugin for in-app purchases.
 author:  Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase
-version: 0.0.1
+version: 0.0.2
 
 dependencies:
   flutter:
     sdk: flutter
 
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+
 flutter:
   plugin:
     androidPackage: io.flutter.plugins.inapppurchase
-    pluginClass: InAppPurchasePlugin
+    pluginClass: InAppPurchasePlugin    
+    
+environment:
+  sdk: ">=2.0.0-dev.28.0 <3.0.0"
+  flutter: ">=0.4.4 <2.0.0"
+
diff --git a/packages/location_background/CHANGELOG.md b/packages/location_background/CHANGELOG.md
new file mode 100644
index 0000000..371102a
--- /dev/null
+++ b/packages/location_background/CHANGELOG.md
@@ -0,0 +1,8 @@
+## 0.0.2
+
+* Added missing flutter_test package dependency.
+* Added missing flutter version requirements.
+
+## 0.0.1
+
+* Initial release.
diff --git a/packages/location_background/pubspec.yaml b/packages/location_background/pubspec.yaml
index f579f37..3b8e2a2 100644
--- a/packages/location_background/pubspec.yaml
+++ b/packages/location_background/pubspec.yaml
@@ -1,49 +1,22 @@
 name: location_background_plugin
 description: A new flutter plugin project.
-version: 0.0.1
-author:
-homepage:
+author:  Flutter Team <flutter-dev@googlegroups.com>
+homepage: https://github.com/flutter/plugins/tree/master/packages/location_background
+version: 0.0.2
 
 dependencies:
   flutter:
     sdk: flutter
 
-# For information on the generic Dart part of this file, see the
-# following page: https://www.dartlang.org/tools/pub/pubspec
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
 
-# The following section is specific to Flutter.
 flutter:
   plugin:
     androidPackage: com.flutter.example.locationbackgroundplugin
     pluginClass: LocationBackgroundPlugin
-
-  # To add assets to your plugin package, add an assets section, like this:
-  # assets:
-  #  - images/a_dot_burr.jpeg
-  #  - images/a_dot_ham.jpeg
-  #
-  # For details regarding assets in packages, see
-  # https://flutter.io/assets-and-images/#from-packages
-  #
-  # An image asset can refer to one or more resolution-specific "variants", see
-  # https://flutter.io/assets-and-images/#resolution-aware.
-
-  # To add custom fonts to your plugin package, add a fonts section here,
-  # in this "flutter" section. Each entry in this list should have a
-  # "family" key with the font family name, and a "fonts" key with a
-  # list giving the asset and other descriptors for the font. For
-  # example:
-  # fonts:
-  #   - family: Schyler
-  #     fonts:
-  #       - asset: fonts/Schyler-Regular.ttf
-  #       - asset: fonts/Schyler-Italic.ttf
-  #         style: italic
-  #   - family: Trajan Pro
-  #     fonts:
-  #       - asset: fonts/TrajanPro.ttf
-  #       - asset: fonts/TrajanPro_Bold.ttf
-  #         weight: 700
-  #
-  # For details regarding fonts in packages, see
-  # https://flutter.io/custom-fonts/#from-packages
+    
+environment:
+  sdk: ">=2.0.0-dev.28.0 <3.0.0"
+  flutter: ">=0.4.4 <2.0.0"
diff --git a/packages/sensors/CHANGELOG.md b/packages/sensors/CHANGELOG.md
index fd3b14d..861dd4b 100644
--- a/packages/sensors/CHANGELOG.md
+++ b/packages/sensors/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.5
+
+* Added missing test package dependency.
+
 ## 0.3.4
 
 * Make sensors Dart 2 compliant.
diff --git a/packages/sensors/pubspec.yaml b/packages/sensors/pubspec.yaml
index 2828ba5..9b9ed24 100644
--- a/packages/sensors/pubspec.yaml
+++ b/packages/sensors/pubspec.yaml
@@ -3,7 +3,7 @@
   gyroscope sensors.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/sensors
-version: 0.3.4
+version: 0.3.5
 
 flutter:
   plugin:
@@ -16,6 +16,7 @@
     sdk: flutter
 
 dev_dependencies:
+  test: ^1.3.0
   flutter_test:
     sdk: flutter
 
diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md
index 979fdf9..d620ed0 100644
--- a/packages/share/CHANGELOG.md
+++ b/packages/share/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.5.3
+
+* Added missing test package dependency.
+* Bumped version of mockito package dependency to pick up Dart 2 support.
+
 ## 0.5.2
 
 * Fixes iOS sharing
diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml
index 4f19b4f..70dfc88 100644
--- a/packages/share/pubspec.yaml
+++ b/packages/share/pubspec.yaml
@@ -3,7 +3,7 @@
   the ACTION_SEND intent on Android and UIActivityViewController on iOS.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/share
-version: 0.5.2
+version: 0.5.3
 
 flutter:
   plugin:
@@ -17,7 +17,8 @@
     sdk: flutter
 
 dev_dependencies:
-  mockito: ^2.2.3
+  test: ^1.3.0
+  mockito: ^3.0.0
   flutter_test:
     sdk: flutter
 
diff --git a/script/before_build_apks.sh b/script/before_build_apks.sh
deleted file mode 100755
index 145e056..0000000
--- a/script/before_build_apks.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
-mkdir android-sdk
-unzip -qq sdk-tools-linux-3859397.zip -d android-sdk
-export ANDROID_HOME=`pwd`/android-sdk
-export PATH=`pwd`/android-sdk/tools/bin:$PATH
-mkdir -p /home/travis/.android # silence sdkmanager warning
-echo 'count=0' > /home/travis/.android/repositories.cfg # silence sdkmanager warning
-        # suppressing output of sdkmanager to keep log under 4MB (travis limit)
-echo y | sdkmanager "tools" >/dev/null
-echo y | sdkmanager "platform-tools" >/dev/null
-echo y | sdkmanager "build-tools;26.0.3" >/dev/null
-echo y | sdkmanager "platforms;android-26" >/dev/null
-echo y | sdkmanager "extras;android;m2repository" >/dev/null
-echo y | sdkmanager "extras;google;m2repository" >/dev/null
-echo y | sdkmanager "patcher;v4" >/dev/null
-sdkmanager --list
-wget http://services.gradle.org/distributions/gradle-4.1-bin.zip
-unzip -qq gradle-4.1-bin.zip
-export GRADLE_HOME=$PWD/gradle-4.1
-export PATH=$GRADLE_HOME/bin:$PATH
-gradle -v
-git clone https://github.com/flutter/flutter.git
-export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-flutter doctor
-pub global activate flutter_plugin_tools
diff --git a/script/before_build_ipas.sh b/script/before_build_ipas.sh
deleted file mode 100755
index 93ffb37..0000000
--- a/script/before_build_ipas.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-brew update
-brew install libimobiledevice
-brew install ideviceinstaller
-brew install ios-deploy
-pod repo update
-gem update cocoapods
-git clone https://github.com/flutter/flutter.git
-export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
-flutter doctor
-pub global activate flutter_plugin_tools
diff --git a/script/check_publish.sh b/script/check_publish.sh
new file mode 100755
index 0000000..c12b776
--- /dev/null
+++ b/script/check_publish.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -e
+
+# This script checks to make sure that each of the plugins *could* be published.
+# It doesn't actually publish anything.
+
+# So that users can run this script from anywhere and it will work as expected.
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
+REPO_DIR="$(dirname "$SCRIPT_DIR")"
+
+source "$SCRIPT_DIR/common.sh"
+
+function check_publish() {
+  local failures=()
+  for package_name in "$@"; do
+    local dir="$REPO_DIR/packages/$package_name"
+    echo "Checking that $package_name can be published."
+    if (cd "$dir" && pub publish --dry-run > /dev/null); then
+      echo "Package $package_name is able to be published."
+    else
+      error "Unable to publish $package_name"
+      failures=("${failures[@]}" "$package_name")
+    fi
+  done
+  if [[ "${#failures[@]}" != 0 ]]; then
+    error "FAIL: The following ${#failures[@]} package(s) failed the publishing check:"
+    for failure in "${failures[@]}"; do
+      error "$failure"
+    done
+  fi
+  return "${#failures[@]}"
+}
+
+# Sets CHANGED_PACKAGE_LIST
+check_changed_packages
+
+if [[ "${#CHANGED_PACKAGE_LIST[@]}" != 0 ]]; then
+  check_publish "${CHANGED_PACKAGE_LIST[@]}"
+fi
\ No newline at end of file
diff --git a/script/common.sh b/script/common.sh
new file mode 100644
index 0000000..eaf94c7
--- /dev/null
+++ b/script/common.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+function error() {
+  echo "$@" 1>&2
+}
+
+function check_changed_packages() {
+  # Try get a merge base for the branch and calculate affected packages.
+  # We need this check because some CIs can do a single branch clones with a limited history of commits.
+  local packages
+  local branch_base_sha="$(git merge-base --fork-point FETCH_HEAD HEAD || git merge-base FETCH_HEAD HEAD)"
+  if [[ "$?" == 0 ]]; then
+    echo "Checking for changed packages from $branch_base_sha"
+    IFS=$'\n' packages=( $(git diff --name-only "$branch_base_sha" HEAD | grep -o "packages/[^/]*" | sed -e "s/packages\///g" | sort | uniq) )
+  else
+    error "Cannot find a merge base for the current branch to run an incremental build..."
+    error "Please rebase your branch onto the latest master!"
+    return 1
+  fi
+
+  # Filter out any packages that don't have a pubspec.yaml: they have probably
+  # been deleted in this PR.
+  CHANGED_PACKAGES=""
+  CHANGED_PACKAGE_LIST=()
+  for package in "${packages[@]}"; do
+    if [[ -f "$REPO_DIR/packages/$package/pubspec.yaml" ]]; then
+      CHANGED_PACKAGES="${CHANGED_PACKAGES},$package"
+      CHANGED_PACKAGE_LIST=("${CHANGED_PACKAGE_LIST[@]}" "$package")
+    fi
+  done
+
+  if [[ "${#CHANGED_PACKAGE_LIST[@]}" == 0 ]]; then
+    echo "No changes detected in packages."
+  else
+    echo "Detected changes in the following ${#CHANGED_PACKAGE_LIST[@]} package(s):"
+    for package in "${CHANGED_PACKAGE_LIST[@]}"; do
+      echo "$package"
+    done
+    echo ""
+  fi
+  return 0
+}
diff --git a/script/incremental_build.sh b/script/incremental_build.sh
index 788a24c..c3a3941 100755
--- a/script/incremental_build.sh
+++ b/script/incremental_build.sh
@@ -1,35 +1,29 @@
 #!/bin/bash
+set -e
 
-set -ev
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
+REPO_DIR="$(dirname "$SCRIPT_DIR")"
 
-BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
+source "$SCRIPT_DIR/common.sh"
 
-if [ "${BRANCH_NAME}" = "master" ]; then
+# Set some default actions if run without arguments.
+ACTIONS=("$@")
+if [[ "${#ACTIONS[@]}" == 0 ]]; then
+  ACTIONS=("test" "analyze" "java-test")
+fi
+
+BRANCH_NAME="${BRANCH_NAME:-"$(git rev-parse --abbrev-ref HEAD)"}"
+if [[ "${BRANCH_NAME}" == "master" ]]; then
   echo "Running for all packages"
-  pub global run flutter_plugin_tools "$@" $PLUGIN_SHARDING
+  (cd "$REPO_DIR" && pub global run flutter_plugin_tools "${ACTIONS[@]}" $PLUGIN_SHARDING)
 else
-  # Make sure there is up-to-date master.
-  git fetch origin master
+  # Sets CHANGED_PACKAGES
+  check_changed_packages
 
-  FLUTTER_CHANGED_GLOBAL=0
-  FLUTTER_CHANGED_PACKAGES=""
-
-  # Try get a merge base for the branch and calculate affected packages.
-  # We need this check because some CIs can do a single branch clones with a limited history of commits.
-  if BRANCH_BASE_SHA=$(git merge-base --fork-point FETCH_HEAD HEAD); then
-    echo "Checking changes from $BRANCH_BASE_SHA..."
-    FLUTTER_CHANGED_GLOBAL=`git diff --name-only $BRANCH_BASE_SHA HEAD | grep -v packages | wc -l`
-    FLUTTER_CHANGED_PACKAGES=`git diff --name-only $BRANCH_BASE_SHA HEAD | grep -o "packages/[^/]*" | sed -e "s/packages\///g" | sort | uniq | paste -s -d, -`
-  else
-    echo "Cannot find a merge base for the current branch to run an incremental build..."
-    echo "Please rebase your branch onto the latest master!"
-  fi
-
-  if [ "${FLUTTER_CHANGED_PACKAGES}" = "" ] || [ $FLUTTER_CHANGED_GLOBAL -gt 0 ]; then
+  if [[ "$CHANGED_PACKAGES" == "" ]]; then
     echo "Running for all packages"
-    pub global run flutter_plugin_tools "$@" $PLUGIN_SHARDING
+    (cd "$REPO_DIR" && pub global run flutter_plugin_tools "${ACTIONS[@]}" $PLUGIN_SHARDING)
   else
-    echo "Running only for $FLUTTER_CHANGED_PACKAGES"
-    pub global run flutter_plugin_tools "$@" --plugins=$FLUTTER_CHANGED_PACKAGES
+    (cd "$REPO_DIR" && pub global run flutter_plugin_tools "${ACTIONS[@]}" --plugins="$CHANGED_PACKAGES" $PLUGIN_SHARDING)
   fi
 fi