Gradle 4.0 update (#320)

diff --git a/packages/connectivity/CHANGELOG.md b/packages/connectivity/CHANGELOG.md
index 1693a44..0ab163b 100644
--- a/packages/connectivity/CHANGELOG.md
+++ b/packages/connectivity/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.2.0
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## 0.1.1
 
 * Add FLT prefix to iOS types.
diff --git a/packages/connectivity/android/.gitignore b/packages/connectivity/android/.gitignore
index 5c4ef82..c6cbe56 100644
--- a/packages/connectivity/android/.gitignore
+++ b/packages/connectivity/android/.gitignore
@@ -6,7 +6,3 @@
 .DS_Store
 /build
 /captures
-
-/gradle
-/gradlew
-/gradlew.bat
diff --git a/packages/connectivity/android/build.gradle b/packages/connectivity/android/build.gradle
index 757f33d..d0df4bb 100644
--- a/packages/connectivity/android/build.gradle
+++ b/packages/connectivity/android/build.gradle
@@ -3,16 +3,18 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -20,8 +22,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/packages/connectivity/example/android/.gitignore b/packages/connectivity/example/android/.gitignore
index 1fd9325..16e843e 100644
--- a/packages/connectivity/example/android/.gitignore
+++ b/packages/connectivity/example/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+/gradle/wrapper/gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/packages/connectivity/example/android/app/build.gradle b/packages/connectivity/example/android/app/build.gradle
index 9a49abc..ef2d5ad 100644
--- a/packages/connectivity/example/android/app/build.gradle
+++ b/packages/connectivity/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -39,7 +39,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.0.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/connectivity/example/android/build.gradle b/packages/connectivity/example/android/build.gradle
index 20525de..4476887 100644
--- a/packages/connectivity/example/android/build.gradle
+++ b/packages/connectivity/example/android/build.gradle
@@ -1,15 +1,17 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -17,13 +19,11 @@
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
     project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties b/packages/connectivity/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
rename from packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
rename to packages/connectivity/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..bf1b63c 100644
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/connectivity/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#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
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/connectivity/pubspec.yaml b/packages/connectivity/pubspec.yaml
index 2044a1e..daaee36 100644
--- a/packages/connectivity/pubspec.yaml
+++ b/packages/connectivity/pubspec.yaml
@@ -1,6 +1,6 @@
 name: connectivity
 description: Allows developers to discover the state of the network connectivity.
-version: 0.1.1
+version: 0.2.0
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity
 
diff --git a/packages/device_info/CHANGELOG.md b/packages/device_info/CHANGELOG.md
index 0f54dbd..63dc2e8 100644
--- a/packages/device_info/CHANGELOG.md
+++ b/packages/device_info/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.1.0
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## 0.0.5 - December 3, 2017
 
 * Added FLT prefix to iOS types
diff --git a/packages/device_info/android/build.gradle b/packages/device_info/android/build.gradle
index f848b6b..d1bab31 100644
--- a/packages/device_info/android/build.gradle
+++ b/packages/device_info/android/build.gradle
@@ -3,28 +3,27 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.jar b/packages/device_info/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 13372ae..0000000
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/packages/device_info/android/gradlew b/packages/device_info/android/gradlew
deleted file mode 100755
index 9d82f78..0000000
--- a/packages/device_info/android/gradlew
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-esac
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/packages/device_info/android/gradlew.bat b/packages/device_info/android/gradlew.bat
deleted file mode 100644
index 8a0b282..0000000
--- a/packages/device_info/android/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/packages/device_info/example/android/.gitignore b/packages/device_info/example/android/.gitignore
index 1658458..16e843e 100644
--- a/packages/device_info/example/android/.gitignore
+++ b/packages/device_info/example/android/.gitignore
@@ -7,3 +7,7 @@
 /build
 /captures
 GeneratedPluginRegistrant.java
+
+/gradle/wrapper/gradle-wrapper.jar
+/gradlew
+/gradlew.bat
diff --git a/packages/device_info/example/android/app/build.gradle b/packages/device_info/example/android/app/build.gradle
index 106620b..f013215 100644
--- a/packages/device_info/example/android/app/build.gradle
+++ b/packages/device_info/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -42,7 +42,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.4.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/device_info/example/android/build.gradle b/packages/device_info/example/android/build.gradle
index 879b8ca..4476887 100644
--- a/packages/device_info/example/android/build.gradle
+++ b/packages/device_info/example/android/build.gradle
@@ -1,25 +1,26 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
     project.evaluationDependsOn(':app')
 }
 
diff --git a/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..aa901e1 100644
--- a/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/device_info/pubspec.yaml b/packages/device_info/pubspec.yaml
index a6f2c4e..aabb0fb 100644
--- a/packages/device_info/pubspec.yaml
+++ b/packages/device_info/pubspec.yaml
@@ -1,6 +1,6 @@
 name: device_info
 description: Provides detailed information about the device the Flutter app is running on.
-version: 0.0.5
+version: 0.1.0
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/device_info
 
diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md
index ad9eaf6..ca53b3b 100644
--- a/packages/image_picker/CHANGELOG.md
+++ b/packages/image_picker/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.2.0
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## 0.1.5
 
 * Added FLT prefix to iOS types
diff --git a/packages/image_picker/android/.gitignore b/packages/image_picker/android/.gitignore
index 5c4ef82..c6cbe56 100755
--- a/packages/image_picker/android/.gitignore
+++ b/packages/image_picker/android/.gitignore
@@ -6,7 +6,3 @@
 .DS_Store
 /build
 /captures
-
-/gradle
-/gradlew
-/gradlew.bat
diff --git a/packages/image_picker/android/build.gradle b/packages/image_picker/android/build.gradle
index dab85fb..5d54165 100755
--- a/packages/image_picker/android/build.gradle
+++ b/packages/image_picker/android/build.gradle
@@ -3,31 +3,30 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
         maven {
             url "https://jitpack.io"
         }
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -38,8 +37,8 @@
 }
 
 dependencies {
-    compile 'com.github.bumptech.glide:glide:3.7.0'
-    compile 'com.github.esafirm.android-image-picker:imagepicker:1.5.0@aar'
-    compile 'com.android.support:appcompat-v7:25.4.0'
-    compile 'com.android.support:recyclerview-v7:25.4.0'
+    api 'com.github.bumptech.glide:glide:4.0.0'
+    api 'com.github.esafirm.android-image-picker:imagepicker:1.9.2@aar'
+    api 'com.android.support:appcompat-v7:26.1.0'
+    api 'com.android.support:recyclerview-v7:26.1.0'
 }
diff --git a/packages/image_picker/example/android/.gitignore b/packages/image_picker/example/android/.gitignore
index 5c4ef82..5b3d2be 100755
--- a/packages/image_picker/example/android/.gitignore
+++ b/packages/image_picker/example/android/.gitignore
@@ -7,6 +7,6 @@
 /build
 /captures
 
-/gradle
+/gradle/wrapper/gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/packages/image_picker/example/android/app/build.gradle b/packages/image_picker/example/android/app/build.gradle
index f43fa12..3ec83cc 100755
--- a/packages/image_picker/example/android/app/build.gradle
+++ b/packages/image_picker/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -41,7 +41,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.0.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/image_picker/example/android/build.gradle b/packages/image_picker/example/android/build.gradle
index f2ab440..96c50be 100755
--- a/packages/image_picker/example/android/build.gradle
+++ b/packages/image_picker/example/android/build.gradle
@@ -1,22 +1,21 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
         maven {
             url "https://jitpack.io"
         }
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
@@ -24,11 +23,10 @@
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
 }
+subprojects {
+    project.evaluationDependsOn(':app')
+}
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties b/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
copy to packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..bf1b63c 100644
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/image_picker/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#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
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml
index 4c3e2ca..c54afc6 100755
--- a/packages/image_picker/pubspec.yaml
+++ b/packages/image_picker/pubspec.yaml
@@ -3,7 +3,7 @@
 description: Flutter plugin that shows an image picker and uses the camera.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker
-version: 0.1.5
+version: 0.2.0
 
 flutter:
   plugin:
diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md
index d7f0687..992657e 100644
--- a/packages/local_auth/CHANGELOG.md
+++ b/packages/local_auth/CHANGELOG.md
@@ -1,3 +1,10 @@
+## [0.1.0]
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## [0.0.3]
 
 * Add FLT prefix to iOS types
diff --git a/packages/local_auth/android/.gitignore b/packages/local_auth/android/.gitignore
index 5c4ef82..c6cbe56 100644
--- a/packages/local_auth/android/.gitignore
+++ b/packages/local_auth/android/.gitignore
@@ -6,7 +6,3 @@
 .DS_Store
 /build
 /captures
-
-/gradle
-/gradlew
-/gradlew.bat
diff --git a/packages/local_auth/android/build.gradle b/packages/local_auth/android/build.gradle
index aede4dc..104476a 100644
--- a/packages/local_auth/android/build.gradle
+++ b/packages/local_auth/android/build.gradle
@@ -3,28 +3,27 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -35,5 +34,5 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:25.0.0"
+    compile "com.android.support:support-v4:26.1.0"
 }
diff --git a/packages/local_auth/example/android/.gitignore b/packages/local_auth/example/android/.gitignore
index 1fd9325..16e843e 100644
--- a/packages/local_auth/example/android/.gitignore
+++ b/packages/local_auth/example/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+/gradle/wrapper/gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/packages/local_auth/example/android/app/build.gradle b/packages/local_auth/example/android/app/build.gradle
index 46e88a1..b119e2d 100644
--- a/packages/local_auth/example/android/app/build.gradle
+++ b/packages/local_auth/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -39,7 +39,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.4.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/local_auth/example/android/build.gradle b/packages/local_auth/example/android/build.gradle
index ebe4957..4476887 100644
--- a/packages/local_auth/example/android/build.gradle
+++ b/packages/local_auth/example/android/build.gradle
@@ -1,32 +1,29 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
-        maven {
-            url "https://maven.google.com"
-        }
     }
 }
 
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
     project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties b/packages/local_auth/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
copy to packages/local_auth/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..bf1b63c 100644
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/local_auth/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#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
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml
index 7ef92e0..a697999 100644
--- a/packages/local_auth/pubspec.yaml
+++ b/packages/local_auth/pubspec.yaml
@@ -1,6 +1,6 @@
 name: local_auth
 description: A plugin that uses local sensors to authenticate users (such as Fingerprint Reader/Touch ID).
-version: 0.0.3
+version: 0.1.0
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth
 
diff --git a/packages/package_info/CHANGELOG.md b/packages/package_info/CHANGELOG.md
index 9e4974e..f7e97f7 100644
--- a/packages/package_info/CHANGELOG.md
+++ b/packages/package_info/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.1.0
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## 0.0.2
 
 * Add FLT prefix to iOS types
diff --git a/packages/package_info/android/.gitignore b/packages/package_info/android/.gitignore
index 5c4ef82..c6cbe56 100644
--- a/packages/package_info/android/.gitignore
+++ b/packages/package_info/android/.gitignore
@@ -6,7 +6,3 @@
 .DS_Store
 /build
 /captures
-
-/gradle
-/gradlew
-/gradlew.bat
diff --git a/packages/package_info/android/build.gradle b/packages/package_info/android/build.gradle
index 1ffbe93..39a0e08 100644
--- a/packages/package_info/android/build.gradle
+++ b/packages/package_info/android/build.gradle
@@ -3,16 +3,18 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -20,8 +22,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/packages/package_info/example/android/.gitignore b/packages/package_info/example/android/.gitignore
index 1fd9325..16e843e 100644
--- a/packages/package_info/example/android/.gitignore
+++ b/packages/package_info/example/android/.gitignore
@@ -8,6 +8,6 @@
 /captures
 GeneratedPluginRegistrant.java
 
-/gradle
+/gradle/wrapper/gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/packages/package_info/example/android/app/build.gradle b/packages/package_info/example/android/app/build.gradle
index a5bbec6..76138a0 100644
--- a/packages/package_info/example/android/app/build.gradle
+++ b/packages/package_info/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -40,7 +40,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.0.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/package_info/example/android/build.gradle b/packages/package_info/example/android/build.gradle
index 20525de..1c71b66 100644
--- a/packages/package_info/example/android/build.gradle
+++ b/packages/package_info/example/android/build.gradle
@@ -1,15 +1,17 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -23,7 +25,3 @@
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties b/packages/package_info/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
copy to packages/package_info/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..bf1b63c 100644
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/package_info/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#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
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/package_info/pubspec.yaml b/packages/package_info/pubspec.yaml
index a8547cc..1547769 100644
--- a/packages/package_info/pubspec.yaml
+++ b/packages/package_info/pubspec.yaml
@@ -1,6 +1,6 @@
 name: package_info
 description: Plugin for querying information about the application package.
-version: 0.0.2
+version: 0.1.0
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/package_info
 
diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md
index 1917d94..b6bad6f 100644
--- a/packages/path_provider/CHANGELOG.md
+++ b/packages/path_provider/CHANGELOG.md
@@ -1,3 +1,10 @@
+## [0.3.0] - 2017-12-20
+
+* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
+  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
+  order to use this version of the plugin. Instructions can be found
+  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).
+
 ## [0.2.2] - 2017-12-03
 
 * Add FLT prefix to iOS types
diff --git a/packages/path_provider/android/.gitignore b/packages/path_provider/android/.gitignore
index 5c4ef82..c6cbe56 100644
--- a/packages/path_provider/android/.gitignore
+++ b/packages/path_provider/android/.gitignore
@@ -6,7 +6,3 @@
 .DS_Store
 /build
 /captures
-
-/gradle
-/gradlew
-/gradlew.bat
diff --git a/packages/path_provider/android/build.gradle b/packages/path_provider/android/build.gradle
index 20c5eaf..968563a 100644
--- a/packages/path_provider/android/build.gradle
+++ b/packages/path_provider/android/build.gradle
@@ -3,16 +3,18 @@
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 rootProject.allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -20,8 +22,8 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/packages/path_provider/example/android/.gitignore b/packages/path_provider/example/android/.gitignore
index 5c4ef82..5b3d2be 100644
--- a/packages/path_provider/example/android/.gitignore
+++ b/packages/path_provider/example/android/.gitignore
@@ -7,6 +7,6 @@
 /build
 /captures
 
-/gradle
+/gradle/wrapper/gradle-wrapper.jar
 /gradlew
 /gradlew.bat
diff --git a/packages/path_provider/example/android/app/build.gradle b/packages/path_provider/example/android/app/build.gradle
index 114a0ee..cb6aa52 100644
--- a/packages/path_provider/example/android/app/build.gradle
+++ b/packages/path_provider/example/android/app/build.gradle
@@ -15,8 +15,8 @@
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.3'
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
 
     lintOptions {
         disable 'InvalidPackage'
@@ -40,7 +40,7 @@
 }
 
 dependencies {
-    androidTestCompile 'com.android.support:support-annotations:25.0.0'
-    androidTestCompile 'com.android.support.test:runner:0.5'
-    androidTestCompile 'com.android.support.test:rules:0.5'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.1'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
 }
diff --git a/packages/path_provider/example/android/build.gradle b/packages/path_provider/example/android/build.gradle
index 20525de..4476887 100644
--- a/packages/path_provider/example/android/build.gradle
+++ b/packages/path_provider/example/android/build.gradle
@@ -1,15 +1,17 @@
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:3.0.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
     }
 }
@@ -17,13 +19,11 @@
 rootProject.buildDir = '../build'
 subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
     project.evaluationDependsOn(':app')
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
 }
-
-task wrapper(type: Wrapper) {
-    gradleVersion = '2.14.1'
-}
diff --git a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties b/packages/path_provider/example/android/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
copy to packages/path_provider/example/android/gradle/wrapper/gradle-wrapper.properties
index 45e7f14..bf1b63c 100644
--- a/packages/device_info/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/path_provider/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#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
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/packages/path_provider/pubspec.yaml b/packages/path_provider/pubspec.yaml
index c3b67c1..90f2e15 100644
--- a/packages/path_provider/pubspec.yaml
+++ b/packages/path_provider/pubspec.yaml
@@ -1,6 +1,6 @@
 name: path_provider
 
-version: 0.2.2
+version: 0.3.0
 description: A Flutter plugin for getting commonly used locations on the filesystem.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider