diff --git a/dev/benchmarks/complex_layout/android/.gitignore b/dev/benchmarks/complex_layout/android/.gitignore
index 1fd9325..3caaa44 100644
--- a/dev/benchmarks/complex_layout/android/.gitignore
+++ b/dev/benchmarks/complex_layout/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/dev/benchmarks/complex_layout/android/app/build.gradle b/dev/benchmarks/complex_layout/android/app/build.gradle
index 1e4b757..9506616 100644
--- a/dev/benchmarks/complex_layout/android/app/build.gradle
+++ b/dev/benchmarks/complex_layout/android/app/build.gradle
@@ -23,6 +23,10 @@
     }
 
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/dev/benchmarks/complex_layout/android/app/src/main/AndroidManifest.xml b/dev/benchmarks/complex_layout/android/app/src/main/AndroidManifest.xml
index df92d8b..c93aafa 100644
--- a/dev/benchmarks/complex_layout/android/app/src/main/AndroidManifest.xml
+++ b/dev/benchmarks/complex_layout/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yourcompany.complexLayout"
-    android:versionCode="1"
-    android:versionName="0.0.1">
+    package="com.yourcompany.complexLayout">
 
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
     <uses-permission android:name="android.permission.INTERNET"/>
 
     <application android:name="io.flutter.app.FlutterApplication" android:label="complex_layout" android:icon="@mipmap/ic_launcher">
diff --git a/dev/benchmarks/complex_layout/android/build.gradle b/dev/benchmarks/complex_layout/android/build.gradle
index 14662e4..77cbd09 100644
--- a/dev/benchmarks/complex_layout/android/build.gradle
+++ b/dev/benchmarks/complex_layout/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -20,12 +23,9 @@
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+    project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/dev/benchmarks/complex_layout/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/dev/benchmarks/microbenchmarks/android/.gitignore b/dev/benchmarks/microbenchmarks/android/.gitignore
index 1fd9325..3caaa44 100644
--- a/dev/benchmarks/microbenchmarks/android/.gitignore
+++ b/dev/benchmarks/microbenchmarks/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/dev/benchmarks/microbenchmarks/android/app/build.gradle b/dev/benchmarks/microbenchmarks/android/app/build.gradle
index 7ecba36..16c4a2a 100644
--- a/dev/benchmarks/microbenchmarks/android/app/build.gradle
+++ b/dev/benchmarks/microbenchmarks/android/app/build.gradle
@@ -23,6 +23,10 @@
     }
 
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/dev/benchmarks/microbenchmarks/android/app/src/main/AndroidManifest.xml b/dev/benchmarks/microbenchmarks/android/app/src/main/AndroidManifest.xml
index 446489e..1c10c5a 100644
--- a/dev/benchmarks/microbenchmarks/android/app/src/main/AndroidManifest.xml
+++ b/dev/benchmarks/microbenchmarks/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yourcompany.microbenchmarks"
-    android:versionCode="1"
-    android:versionName="0.0.1">
+    package="com.yourcompany.microbenchmarks">
 
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
     <uses-permission android:name="android.permission.INTERNET"/>
 
     <application android:name="io.flutter.app.FlutterApplication" android:label="microbenchmarks" android:icon="@mipmap/ic_launcher">
diff --git a/dev/benchmarks/microbenchmarks/android/build.gradle b/dev/benchmarks/microbenchmarks/android/build.gradle
index 14662e4..77cbd09 100644
--- a/dev/benchmarks/microbenchmarks/android/build.gradle
+++ b/dev/benchmarks/microbenchmarks/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -20,12 +23,9 @@
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+    project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties b/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/dev/benchmarks/microbenchmarks/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/dev/integration_tests/channels/android/.gitignore b/dev/integration_tests/channels/android/.gitignore
index 1fd9325..3caaa44 100644
--- a/dev/integration_tests/channels/android/.gitignore
+++ b/dev/integration_tests/channels/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/dev/integration_tests/channels/android/app/build.gradle b/dev/integration_tests/channels/android/app/build.gradle
index 4b058ea..40c3dca 100644
--- a/dev/integration_tests/channels/android/app/build.gradle
+++ b/dev/integration_tests/channels/android/app/build.gradle
@@ -23,6 +23,10 @@
     }
 
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/dev/integration_tests/channels/android/app/src/main/AndroidManifest.xml b/dev/integration_tests/channels/android/app/src/main/AndroidManifest.xml
index b63cc17..199e25e 100644
--- a/dev/integration_tests/channels/android/app/src/main/AndroidManifest.xml
+++ b/dev/integration_tests/channels/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yourcompany.channels"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="com.yourcompany.channels">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/dev/integration_tests/channels/android/build.gradle b/dev/integration_tests/channels/android/build.gradle
index f5004b9..77cbd09 100644
--- a/dev/integration_tests/channels/android/build.gradle
+++ b/dev/integration_tests/channels/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100755
index 0000000..45e7f14
--- /dev/null
+++ b/dev/integration_tests/channels/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/dev/integration_tests/ui/android/.gitignore b/dev/integration_tests/ui/android/.gitignore
index 1fd9325..3caaa44 100644
--- a/dev/integration_tests/ui/android/.gitignore
+++ b/dev/integration_tests/ui/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/dev/integration_tests/ui/android/app/build.gradle b/dev/integration_tests/ui/android/app/build.gradle
index ef18a0c..134fe51 100644
--- a/dev/integration_tests/ui/android/app/build.gradle
+++ b/dev/integration_tests/ui/android/app/build.gradle
@@ -23,6 +23,10 @@
     }
 
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/dev/integration_tests/ui/android/app/src/main/AndroidManifest.xml b/dev/integration_tests/ui/android/app/src/main/AndroidManifest.xml
index 36315a0..5713077 100644
--- a/dev/integration_tests/ui/android/app/src/main/AndroidManifest.xml
+++ b/dev/integration_tests/ui/android/app/src/main/AndroidManifest.xml
@@ -3,11 +3,7 @@
      found in the LICENSE file.
  -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yourcompany.integration_ui"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="com.yourcompany.integration_ui">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/dev/integration_tests/ui/android/build.gradle b/dev/integration_tests/ui/android/build.gradle
index f5004b9..77cbd09 100644
--- a/dev/integration_tests/ui/android/build.gradle
+++ b/dev/integration_tests/ui/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties b/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/dev/integration_tests/ui/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/dev/manual_tests/android/.gitignore b/dev/manual_tests/android/.gitignore
index 1fd9325..3caaa44 100644
--- a/dev/manual_tests/android/.gitignore
+++ b/dev/manual_tests/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/dev/manual_tests/android/app/src/main/AndroidManifest.xml b/dev/manual_tests/android/app/src/main/AndroidManifest.xml
index 1186722..03b88c4 100644
--- a/dev/manual_tests/android/app/src/main/AndroidManifest.xml
+++ b/dev/manual_tests/android/app/src/main/AndroidManifest.xml
@@ -4,11 +4,7 @@
      found in the LICENSE file.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.manual_tests"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="io.flutter.examples.manual_tests">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/dev/manual_tests/android/build.gradle b/dev/manual_tests/android/build.gradle
index f5004b9..77cbd09 100644
--- a/dev/manual_tests/android/build.gradle
+++ b/dev/manual_tests/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties b/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100755
index 0000000..45e7f14
--- /dev/null
+++ b/dev/manual_tests/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/README.md b/examples/README.md
index face684..cbbfb07 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -44,3 +44,12 @@
 
 - **Stocks** The [stocks](stocks) demo shows how one might structure
   an application with several screens.
+
+Note on Gradle wrapper files in `.gitignore`:
+
+Gradle wrapper files should normally be checked into source control.
+The example projects don't do that to avoid having several copies of the
+wrapper binary in the Flutter repo. Instead, the Gradle wrapper is
+injected by Flutter tooling, and the wrapper files are .gitignore'd to
+avoid making the Flutter repository dirty as a side effect of running
+the examples.
diff --git a/examples/catalog/android/.gitignore b/examples/catalog/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/catalog/android/.gitignore
+++ b/examples/catalog/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/catalog/android/app/build.gradle b/examples/catalog/android/app/build.gradle
index 7ecba36..0e54747 100644
--- a/examples/catalog/android/app/build.gradle
+++ b/examples/catalog/android/app/build.gradle
@@ -23,6 +23,11 @@
     }
 
     defaultConfig {
+        applicationId "io.flutter.examples.catalog"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/examples/catalog/android/app/src/main/AndroidManifest.xml b/examples/catalog/android/app/src/main/AndroidManifest.xml
index fe5d57a..d53f899 100644
--- a/examples/catalog/android/app/src/main/AndroidManifest.xml
+++ b/examples/catalog/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yourcompany.animated_list"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="com.yourcompany.animated_list">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/catalog/android/build.gradle b/examples/catalog/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/catalog/android/build.gradle
+++ b/examples/catalog/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/catalog/android/gradle/wrapper/gradle-wrapper.properties b/examples/catalog/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/catalog/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/flutter_gallery/android/.gitignore b/examples/flutter_gallery/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/flutter_gallery/android/.gitignore
+++ b/examples/flutter_gallery/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/flutter_gallery/android/app/build.gradle b/examples/flutter_gallery/android/app/build.gradle
index a478003..893cbbd 100644
--- a/examples/flutter_gallery/android/app/build.gradle
+++ b/examples/flutter_gallery/android/app/build.gradle
@@ -23,10 +23,12 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.examples.gallery"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/examples/flutter_gallery/android/app/src/main/AndroidManifest.xml b/examples/flutter_gallery/android/app/src/main/AndroidManifest.xml
index c854b13..feb9111 100644
--- a/examples/flutter_gallery/android/app/src/main/AndroidManifest.xml
+++ b/examples/flutter_gallery/android/app/src/main/AndroidManifest.xml
@@ -4,11 +4,7 @@
      found in the LICENSE file.
  -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.gallery"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="io.flutter.examples.gallery">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/flutter_gallery/android/build.gradle b/examples/flutter_gallery/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/flutter_gallery/android/build.gradle
+++ b/examples/flutter_gallery/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties b/examples/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/flutter_gallery/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/flutter_view/android/.gitignore b/examples/flutter_view/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/flutter_view/android/.gitignore
+++ b/examples/flutter_view/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/flutter_view/android/app/build.gradle b/examples/flutter_view/android/app/build.gradle
index 1b738a4..e3d4c7a 100644
--- a/examples/flutter_view/android/app/build.gradle
+++ b/examples/flutter_view/android/app/build.gradle
@@ -23,6 +23,11 @@
     }
 
     defaultConfig {
+        applicationId "io.flutter.examples.flutter_view"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/examples/flutter_view/android/app/src/main/AndroidManifest.xml b/examples/flutter_view/android/app/src/main/AndroidManifest.xml
index 8ccf7b8..4b186df 100644
--- a/examples/flutter_view/android/app/src/main/AndroidManifest.xml
+++ b/examples/flutter_view/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.view"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="com.example.view">
 
     <!-- The INTERNET permission is required for development. Specifically, flutter needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.
diff --git a/examples/flutter_view/android/build.gradle b/examples/flutter_view/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/flutter_view/android/build.gradle
+++ b/examples/flutter_view/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties b/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/flutter_view/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/hello_world/android/.gitignore b/examples/hello_world/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/hello_world/android/.gitignore
+++ b/examples/hello_world/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/hello_world/android/app/build.gradle b/examples/hello_world/android/app/build.gradle
index dc36ce3..7b3edc8 100644
--- a/examples/hello_world/android/app/build.gradle
+++ b/examples/hello_world/android/app/build.gradle
@@ -23,10 +23,12 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.examples.hello_world"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/examples/hello_world/android/app/src/main/AndroidManifest.xml b/examples/hello_world/android/app/src/main/AndroidManifest.xml
index 46ceb56..2ef9e89 100644
--- a/examples/hello_world/android/app/src/main/AndroidManifest.xml
+++ b/examples/hello_world/android/app/src/main/AndroidManifest.xml
@@ -4,11 +4,7 @@
      found in the LICENSE file.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.hello_world"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="io.flutter.examples.hello_world">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/hello_world/android/build.gradle b/examples/hello_world/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/hello_world/android/build.gradle
+++ b/examples/hello_world/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties b/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/hello_world/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/layers/android/.gitignore b/examples/layers/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/layers/android/.gitignore
+++ b/examples/layers/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/layers/android/app/build.gradle b/examples/layers/android/app/build.gradle
index 7ecba36..374a20a 100644
--- a/examples/layers/android/app/build.gradle
+++ b/examples/layers/android/app/build.gradle
@@ -23,6 +23,11 @@
     }
 
     defaultConfig {
+        applicationId "io.flutter.examples.layers"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
diff --git a/examples/layers/android/app/src/main/AndroidManifest.xml b/examples/layers/android/app/src/main/AndroidManifest.xml
index c4c3bc1..c629496 100644
--- a/examples/layers/android/app/src/main/AndroidManifest.xml
+++ b/examples/layers/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.Layers"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="io.flutter.examples.Layers">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/layers/android/build.gradle b/examples/layers/android/build.gradle
index 14662e4..77cbd09 100644
--- a/examples/layers/android/build.gradle
+++ b/examples/layers/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -20,12 +23,9 @@
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+    project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/layers/android/gradle/wrapper/gradle-wrapper.properties b/examples/layers/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/layers/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/platform_channel/android/.gitignore b/examples/platform_channel/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/platform_channel/android/.gitignore
+++ b/examples/platform_channel/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/platform_channel/android/app/build.gradle b/examples/platform_channel/android/app/build.gradle
index e6b8313..409bbfb 100644
--- a/examples/platform_channel/android/app/build.gradle
+++ b/examples/platform_channel/android/app/build.gradle
@@ -23,8 +23,12 @@
     }
 
     defaultConfig {
+        applicationId "io.flutter.examples.platform_channel"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-        applicationId "com.example.platformchannel"
     }
 
     buildTypes {
diff --git a/examples/platform_channel/android/app/src/main/AndroidManifest.xml b/examples/platform_channel/android/app/src/main/AndroidManifest.xml
index 9af2839..290a6ce 100644
--- a/examples/platform_channel/android/app/src/main/AndroidManifest.xml
+++ b/examples/platform_channel/android/app/src/main/AndroidManifest.xml
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.platformchannel"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="com.example.platformchannel">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/platform_channel/android/build.gradle b/examples/platform_channel/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/platform_channel/android/build.gradle
+++ b/examples/platform_channel/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties b/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/platform_channel/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/platform_view/android/.gitignore b/examples/platform_view/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/platform_view/android/.gitignore
+++ b/examples/platform_view/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/platform_view/android/app/build.gradle b/examples/platform_view/android/app/build.gradle
index b3cc1c9..e5f19bf 100644
--- a/examples/platform_view/android/app/build.gradle
+++ b/examples/platform_view/android/app/build.gradle
@@ -23,10 +23,12 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
-        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "io.flutter.examples.platform_view"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/examples/platform_view/android/app/src/main/AndroidManifest.xml b/examples/platform_view/android/app/src/main/AndroidManifest.xml
index 770618b..3259eb2 100644
--- a/examples/platform_view/android/app/src/main/AndroidManifest.xml
+++ b/examples/platform_view/android/app/src/main/AndroidManifest.xml
@@ -1,11 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.platform_view"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk
-        android:minSdkVersion="16"
-        android:targetSdkVersion="21" />
+    package="io.flutter.examples.platform_view">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/platform_view/android/build.gradle b/examples/platform_view/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/platform_view/android/build.gradle
+++ b/examples/platform_view/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties b/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..45e7f14
--- /dev/null
+++ b/examples/platform_view/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/examples/stocks/android/.gitignore b/examples/stocks/android/.gitignore
index 1fd9325..45cf572 100644
--- a/examples/stocks/android/.gitignore
+++ b/examples/stocks/android/.gitignore
@@ -8,6 +8,8 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+# Gradle wrapper files should normally be checked into source control.
+# See ../../README.md
+gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/examples/stocks/android/app/build.gradle b/examples/stocks/android/app/build.gradle
index 1b97167..78f362b 100644
--- a/examples/stocks/android/app/build.gradle
+++ b/examples/stocks/android/app/build.gradle
@@ -23,8 +23,12 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         applicationId "io.flutter.examples.stocks"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "0.0.1"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/examples/stocks/android/app/src/main/AndroidManifest.xml b/examples/stocks/android/app/src/main/AndroidManifest.xml
index f259417..77ae740 100644
--- a/examples/stocks/android/app/src/main/AndroidManifest.xml
+++ b/examples/stocks/android/app/src/main/AndroidManifest.xml
@@ -4,11 +4,7 @@
      found in the LICENSE file.
  -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="io.flutter.examples.stocks"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+    package="io.flutter.examples.stocks">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/examples/stocks/android/build.gradle b/examples/stocks/android/build.gradle
index f5004b9..77cbd09 100644
--- a/examples/stocks/android/build.gradle
+++ b/examples/stocks/android/build.gradle
@@ -1,10 +1,13 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:2.3.3'
     }
 }
 
@@ -26,7 +29,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/examples/stocks/android/gradle/wrapper/gradle-wrapper.properties b/examples/stocks/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100755
index 0000000..45e7f14
--- /dev/null
+++ b/examples/stocks/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart
index 7517a23..12c49d0 100644
--- a/packages/flutter_tools/lib/src/android/android_studio.dart
+++ b/packages/flutter_tools/lib/src/android/android_studio.dart
@@ -6,7 +6,6 @@
 import '../base/context.dart';
 import '../base/file_system.dart';
 import '../base/io.dart';
-import '../base/os.dart';
 import '../base/platform.dart';
 import '../base/process_manager.dart';
 import '../base/version.dart';
@@ -25,27 +24,9 @@
 // /Applications/Android Studio.app/Contents/
 // $HOME/Applications/Android Studio.app/Contents/
 
-// $STUDIO_HOME/gradle/gradle-X.Y.Z/bin/gradle
-
-final Version minGradleVersion = new Version(2, 14, 1);
-
 final RegExp _dotHomeStudioVersionMatcher =
     new RegExp(r'^\.AndroidStudio([^\d]*)([\d.]+)');
 
-/// Locate Gradle.
-String get gradleExecutable {
-  // See if the user has explicitly configured gradle-dir.
-  final String gradleDir = config.getValue('gradle-dir');
-  if (gradleDir != null) {
-    if (fs.isFileSync(gradleDir))
-      return gradleDir;
-    return fs.path.join(
-        gradleDir, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle'
-    );
-  }
-  return androidStudio?.gradleExecutable ?? os.which('gradle')?.path;
-}
-
 String get javaPath => androidStudio?.javaPath;
 
 class AndroidStudio implements Comparable<AndroidStudio> {
@@ -58,7 +39,6 @@
   final Version version;
   final String configured;
 
-  String _gradlePath;
   String _javaPath;
   bool _isValid = false;
   final List<String> _validationMessages = <String>[];
@@ -98,11 +78,6 @@
     return null;
   }
 
-  String get gradlePath => _gradlePath;
-
-  String get gradleExecutable => fs.path
-      .join(_gradlePath, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle');
-
   String get javaPath => _javaPath;
 
   bool get isValid => _isValid;
@@ -246,40 +221,6 @@
       return;
     }
 
-    Version latestGradleVersion;
-
-    List<FileSystemEntity> gradlePaths;
-    try {
-      gradlePaths = fs.directory(fs.path.join(directory, 'gradle')).listSync();
-      for (FileSystemEntity entry in gradlePaths.where((FileSystemEntity e) =>
-          e.basename.startsWith('gradle-') && e is Directory)) {
-        final Version version =
-            new Version.parse(entry.basename.substring('gradle-'.length)) ??
-                Version.unknown;
-        if (latestGradleVersion == null || version > latestGradleVersion) {
-          latestGradleVersion = version;
-          if (version >= minGradleVersion) {
-            _gradlePath = entry.path;
-          }
-        }
-      }
-    } catch (e) {
-      printTrace('Unable to determine Gradle version: $e');
-    }
-
-    if (latestGradleVersion == null) {
-      _validationMessages.add('Gradle not found.');
-    } else if (_gradlePath == null) {
-      _validationMessages.add('Gradle version $minGradleVersion required. '
-          'Found version $latestGradleVersion.');
-    } else if (processManager.canRun(gradleExecutable)) {
-      _isValid = true;
-      _validationMessages.add('Gradle version $latestGradleVersion');
-    } else {
-      _validationMessages.add(
-          'Gradle version $latestGradleVersion at $_gradlePath is not executable.');
-    }
-
     final String javaPath = platform.isMacOS ?
         fs.path.join(directory, 'jre', 'jdk', 'Contents', 'Home') :
         fs.path.join(directory, 'jre');
@@ -293,6 +234,7 @@
         final String javaVersion = versionLines.length >= 2 ? versionLines[1] : versionLines[0];
         _validationMessages.add('Java version $javaVersion');
         _javaPath = javaPath;
+        _isValid = true;
       } else {
         _validationMessages.add('Unable to determine bundled Java version.');
       }
diff --git a/packages/flutter_tools/lib/src/android/android_studio_validator.dart b/packages/flutter_tools/lib/src/android/android_studio_validator.dart
index 5a8da16..512ea49 100644
--- a/packages/flutter_tools/lib/src/android/android_studio_validator.dart
+++ b/packages/flutter_tools/lib/src/android/android_studio_validator.dart
@@ -4,10 +4,6 @@
 
 import 'dart:async';
 
-import '../base/file_system.dart';
-import '../base/io.dart';
-import '../base/platform.dart';
-import '../base/process_manager.dart';
 import '../base/version.dart';
 import '../doctor.dart';
 import '../globals.dart';
@@ -27,10 +23,6 @@
       validators.addAll(studios
           .map((AndroidStudio studio) => new AndroidStudioValidator(studio)));
     }
-    final String cfgGradleDir = config.getValue('gradle-dir');
-    if (cfgGradleDir != null) {
-      validators.add(new ConfiguredGradleValidator(cfgGradleDir));
-    }
     return validators;
   }
 
@@ -84,54 +76,3 @@
         statusInfo: 'not installed');
   }
 }
-
-class ConfiguredGradleValidator extends DoctorValidator {
-  final String cfgGradleDir;
-
-  ConfiguredGradleValidator(this.cfgGradleDir) : super('Gradle');
-
-  @override
-  Future<ValidationResult> validate() async {
-    ValidationType type = ValidationType.missing;
-    final List<ValidationMessage> messages = <ValidationMessage>[];
-
-    messages.add(new ValidationMessage('gradle-dir = $cfgGradleDir'));
-
-    String gradleExecutable = cfgGradleDir;
-    if (!fs.isFileSync(cfgGradleDir)) {
-      gradleExecutable = fs.path.join(
-          cfgGradleDir, 'bin', platform.isWindows ? 'gradle.bat' : 'gradle');
-    }
-    String versionString;
-    if (processManager.canRun(gradleExecutable)) {
-      type = ValidationType.partial;
-      final ProcessResult result =
-          processManager.runSync(<String>[gradleExecutable, '--version']);
-      if (result.exitCode == 0) {
-        versionString = result.stdout
-            .toString()
-            .split('\n')
-            .firstWhere((String s) => s.startsWith('Gradle '))
-            .substring('Gradle '.length);
-        final Version version = new Version.parse(versionString) ?? Version.unknown;
-        if (version >= minGradleVersion) {
-          type = ValidationType.installed;
-        } else {
-          messages.add(new ValidationMessage.error(
-              'Gradle version $minGradleVersion required. Found version $versionString.'));
-        }
-      } else {
-        messages
-            .add(new ValidationMessage('Unable to determine Gradle version.'));
-      }
-    } else {
-      messages
-          .add(new ValidationMessage('Gradle not found at $gradleExecutable'));
-    }
-
-    messages.add(new ValidationMessage(
-        'Flutter supports building with Gradle from Android Studio.\n'
-        'Consider removing your gradle-dir setting by running:\nflutter config --gradle-dir='));
-    return new ValidationResult(type, messages, statusInfo: versionString);
-  }
-}
diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart
index b93e9ac..2310c83 100644
--- a/packages/flutter_tools/lib/src/android/gradle.dart
+++ b/packages/flutter_tools/lib/src/android/gradle.dart
@@ -22,6 +22,7 @@
 const String gradleManifestPath = 'android/app/src/main/AndroidManifest.xml';
 const String gradleAppOutV1 = 'android/app/build/outputs/apk/app-debug.apk';
 const String gradleAppOutDirV1 = 'android/app/build/outputs/apk';
+const String gradleVersion = '3.3';
 
 String _cachedGradleAppOutDirV2;
 
@@ -104,16 +105,6 @@
   return gradleAppOutDirV1;
 }
 
-String locateSystemGradle({ bool ensureExecutable: true }) {
-  final String gradle = gradleExecutable;
-  if (ensureExecutable && gradle != null) {
-    final File file = fs.file(gradle);
-    if (file.existsSync())
-      os.makeExecutable(file);
-  }
-  return gradle;
-}
-
 String locateProjectGradlew({ bool ensureExecutable: true }) {
   final String path = fs.path.join(
       'android', platform.isWindows ? 'gradlew.bat' : 'gradlew'
@@ -132,14 +123,27 @@
 String ensureGradle() {
   String gradle = locateProjectGradlew();
   if (gradle == null) {
-    gradle = locateSystemGradle();
-    if (gradle == null)
-      throwToolExit('Unable to locate gradle. Please install Android Studio.');
+    _injectGradleWrapper();
+    gradle = locateProjectGradlew();
   }
-  printTrace('Using gradle from $gradle.');
   return gradle;
 }
 
+void _injectGradleWrapper() {
+  copyDirectorySync(cache.getArtifactDirectory('gradle_wrapper'), fs.directory('android'));
+  final String propertiesPath = fs.path.join('android', 'gradle', 'wrapper', 'gradle-wrapper.properties');
+  if (!fs.file(propertiesPath).existsSync()) {
+    fs.file(propertiesPath).writeAsStringSync('''
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\\://services.gradle.org/distributions/gradle-$gradleVersion-all.zip
+''', flush: true,
+    );
+  }
+}
+
 /// Create android/local.properties if needed, and update Flutter settings.
 void updateLocalProperties({String projectPath, String buildMode}) {
   final File localProperties = (projectPath == null)
@@ -226,7 +230,7 @@
   final String assembleTask = "assemble${toTitleCase(buildModeName)}";
 
   // Run 'gradle assemble<BuildMode>'.
-  final Status status = logger.startProgress('Running \'gradle $assembleTask\'...', expectSlowOperation: true);
+  final Status status = logger.startProgress('Running \'gradlew $assembleTask\'...', expectSlowOperation: true);
   final String gradlePath = fs.file(gradle).absolute.path;
   final List<String> command = <String>[gradlePath];
   if (!logger.isVerbose) {
diff --git a/packages/flutter_tools/templates/create/android-java.tmpl/app/build.gradle.tmpl b/packages/flutter_tools/templates/create/android-java.tmpl/app/build.gradle.tmpl
index 35b0cba..2bd6c77 100644
--- a/packages/flutter_tools/templates/create/android-java.tmpl/app/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/create/android-java.tmpl/app/build.gradle.tmpl
@@ -23,10 +23,13 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "{{androidIdentifier}}"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/packages/flutter_tools/templates/create/android-java.tmpl/build.gradle b/packages/flutter_tools/templates/create/android-java.tmpl/build.gradle
index 879b8ca..77cbd09 100644
--- a/packages/flutter_tools/templates/create/android-java.tmpl/build.gradle
+++ b/packages/flutter_tools/templates/create/android-java.tmpl/build.gradle
@@ -1,6 +1,9 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
diff --git a/packages/flutter_tools/templates/create/android-kotlin.tmpl/app/build.gradle.tmpl b/packages/flutter_tools/templates/create/android-kotlin.tmpl/app/build.gradle.tmpl
index 1b96050..f72d9dd 100644
--- a/packages/flutter_tools/templates/create/android-kotlin.tmpl/app/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/create/android-kotlin.tmpl/app/build.gradle.tmpl
@@ -28,10 +28,13 @@
     }
 
     defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "{{androidIdentifier}}"
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
 
     buildTypes {
diff --git a/packages/flutter_tools/templates/create/android-kotlin.tmpl/build.gradle b/packages/flutter_tools/templates/create/android-kotlin.tmpl/build.gradle
index 27a170c..16bdc53 100644
--- a/packages/flutter_tools/templates/create/android-kotlin.tmpl/build.gradle
+++ b/packages/flutter_tools/templates/create/android-kotlin.tmpl/build.gradle
@@ -1,6 +1,9 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
diff --git a/packages/flutter_tools/templates/create/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/create/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
index 592a869..640daac 100644
--- a/packages/flutter_tools/templates/create/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
+++ b/packages/flutter_tools/templates/create/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
@@ -1,9 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="{{androidIdentifier}}"
-    android:versionCode="1"
-    android:versionName="0.0.1">
-
-    <uses-sdk android:minSdkVersion="{{androidMinApiLevel}}" android:targetSdkVersion="21" />
+    package="{{androidIdentifier}}">
 
     <!-- The INTERNET permission is required for development. Specifically,
          flutter needs it to communicate with the running application
diff --git a/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
index 5ad2e82..6bc1902 100644
--- a/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/plugin/android-java.tmpl/build.gradle.tmpl
@@ -4,6 +4,9 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
@@ -27,6 +30,10 @@
     buildToolsVersion '25.0.3'
 
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     lintOptions {
diff --git a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
index 02514fd..3cc816a 100644
--- a/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
+++ b/packages/flutter_tools/templates/plugin/android-kotlin.tmpl/build.gradle.tmpl
@@ -4,6 +4,9 @@
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url "https://maven.google.com"
+        }
     }
 
     dependencies {
@@ -31,6 +34,10 @@
         main.java.srcDirs += 'src/main/kotlin'
     }
     defaultConfig {
+        minSdkVersion 16
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     lintOptions {
diff --git a/packages/flutter_tools/templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl
index d976a6d..9d86092 100644
--- a/packages/flutter_tools/templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl
+++ b/packages/flutter_tools/templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl
@@ -1,7 +1,3 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="{{androidIdentifier}}"
-  android:versionCode="1"
-  android:versionName="0.0.1">
-
-  <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
+  package="{{androidIdentifier}}">
 </manifest>
