diff --git a/build.gradle b/build.gradle
index 25e72a4..893a47c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,14 +5,14 @@
         maven { url '../../prebuilts/tools/common/m2/internal' }
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:0.10.0'
+        classpath 'com.android.tools.build:gradle:1.1.0'
     }
 }
 
 ext.supportVersion = '21.0.3'
 ext.extraVersion = 10
 ext.supportRepoOut = ''
-ext.buildToolsVersion = '19.0.3'
+ext.buildToolsVersion = '21.0.0'
 ext.buildNumber = Integer.toString(ext.extraVersion)
 
 /*
@@ -121,10 +121,11 @@
 import com.google.common.hash.HashCode
 import com.google.common.hash.HashFunction
 import com.google.common.hash.Hashing
+import java.nio.charset.Charset
 
 def getSha1(File inputFile) {
     HashFunction hashFunction = Hashing.sha1()
-    HashCode hashCode = hashFunction.hashString(inputFile.getAbsolutePath())
+    HashCode hashCode = hashFunction.hashString(inputFile.getAbsolutePath(), Charset.forName("UTF-8"))
     return hashCode.toString()
 }
 
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 127125b..800b59f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=../../../../tools/external/gradle/gradle-1.11-bin.zip
+distributionUrl=../../../../tools/external/gradle/gradle-2.2.1-bin.zip
diff --git a/v13/build.gradle b/v13/build.gradle
index 851f6ca..d0eb43e 100644
--- a/v13/build.gradle
+++ b/v13/build.gradle
@@ -52,7 +52,6 @@
 
 android {
     compileSdkVersion 13
-    buildToolsVersion "19.0.1"
 
     defaultConfig {
         minSdkVersion 13
@@ -81,7 +80,7 @@
 
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -92,9 +91,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -104,12 +103,12 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     project.ext.allSS.each { ss ->
-        javadocTask.source ss.allJava
-        sourcesJarTask.from ss.allSource
+        javadocTask.source ss.java
+        sourcesJarTask.from ss.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/v17/leanback/build.gradle b/v17/leanback/build.gradle
index f1e04a1..b34e2a1 100644
--- a/v17/leanback/build.gradle
+++ b/v17/leanback/build.gradle
@@ -11,8 +11,6 @@
     // WARNING: should be 17
     compileSdkVersion 'current'
 
-    buildToolsVersion "19.0.1"
-
     defaultConfig {
         minSdkVersion 17
         // TODO: get target from branch
@@ -38,7 +36,7 @@
 android.libraryVariants.all { variant ->
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -49,9 +47,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -61,7 +59,7 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/v4/build.gradle b/v4/build.gradle
index 1cf63e8..026819e 100644
--- a/v4/build.gradle
+++ b/v4/build.gradle
@@ -67,7 +67,6 @@
 
 android {
     compileSdkVersion 4
-    buildToolsVersion "19.0.1"
 
     defaultConfig {
         minSdkVersion 4
@@ -95,7 +94,7 @@
 
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -106,9 +105,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -118,12 +117,12 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     project.ext.allSS.each { ss ->
-        javadocTask.source ss.allJava
-        sourcesJarTask.from ss.allSource
+        javadocTask.source ss.java
+        sourcesJarTask.from ss.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/v7/cardview/build.gradle b/v7/cardview/build.gradle
index b0d4401..143519c 100644
--- a/v7/cardview/build.gradle
+++ b/v7/cardview/build.gradle
@@ -6,8 +6,6 @@
     // WARNING: should be 7
     compileSdkVersion 'current'
 
-    buildToolsVersion "19.0.1"
-
     defaultConfig {
         minSdkVersion 7
         // TODO: get target from branch
@@ -33,7 +31,7 @@
 android.libraryVariants.all { variant ->
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -44,9 +42,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -56,7 +54,7 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/v7/palette/build.gradle b/v7/palette/build.gradle
index 863028a..512aa6f 100644
--- a/v7/palette/build.gradle
+++ b/v7/palette/build.gradle
@@ -28,7 +28,7 @@
 android.libraryVariants.all { variant ->
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -39,9 +39,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -51,7 +51,7 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
diff --git a/v7/recyclerview/build.gradle b/v7/recyclerview/build.gradle
index 4d0b56492..550e39e 100644
--- a/v7/recyclerview/build.gradle
+++ b/v7/recyclerview/build.gradle
@@ -9,7 +9,6 @@
 
 android {
     compileSdkVersion 7
-    buildToolsVersion "19.0.1"
 
     defaultConfig {
         minSdkVersion 7
@@ -31,7 +30,7 @@
 android.libraryVariants.all { variant ->
     def name = variant.buildType.name
 
-    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
         return; // Skip debug builds.
     }
     def suffix = name.capitalize()
@@ -42,9 +41,9 @@
         from 'LICENSE.txt'
     }
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.allJava
+        source android.sourceSets.main.java
         classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
 
     def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
@@ -54,7 +53,7 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
-        from android.sourceSets.main.allSource
+        from android.sourceSets.main.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
