diff --git a/lib/java/CMakeLists.txt b/lib/java/CMakeLists.txt
index ba11f34..2014f5c 100644
--- a/lib/java/CMakeLists.txt
+++ b/lib/java/CMakeLists.txt
@@ -17,32 +17,50 @@
 # under the License.
 #
 
-if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
-    set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
-else()
-    set(JAVA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/java")
-endif()
+file(GLOB java_sources src/**/*.java)
 
-if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
-    set(JAVA_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/java")
-else()
-    set(JAVA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/java")
-endif()
+if(ANDROID)
+    set(android_sources
+        android/build.gradle
+        android/settings.gradle
+        android/src/main/AndroidManifest.xml
+    )
+    set(THRIFT_AAR outputs/aar/thrift-debug.aar outputs/aar/thrift-release.aar)
+    add_custom_command(
+        OUTPUT ${THRIFT_AAR}
+        COMMAND ${GRADLE_EXECUTABLE} -p${CMAKE_CURRENT_SOURCE_DIR}/android -PbuildDir=${CMAKE_CURRENT_BINARY_DIR} assemble
+        DEPENDS ${java_sources} ${android_sources})
+    add_custom_target(thrift_aar ALL DEPENDS ${THRIFT_AAR})
 
-add_custom_target(ant_build ALL
-    COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir} -f build.xml
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    COMMENT "Building Java library using Ant"
-)
+else(ANDROID)
 
-# Hook the ant install task into CMake install
-install(CODE "execute_process(
-    COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} install
-    -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir}
-    -Dinstall.path=${JAVA_INSTALL_DIR} -Dinstall.javadoc.path=${JAVA_DOC_INSTALL_DIR} -f build.xml
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-)")
+    if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
+        set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
+    else()
+        set(JAVA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/java")
+    endif()
 
-if(BUILD_TESTING)
-    #add_subdirectory(test)
-endif()
+    if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
+        set(JAVA_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/java")
+    else()
+        set(JAVA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/java")
+    endif()
+
+    add_custom_target(ant_build ALL
+        COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir} -f build.xml
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        COMMENT "Building Java library using Ant"
+    )
+
+    # Hook the ant install task into CMake install
+    install(CODE "execute_process(
+        COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} install
+        -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir}
+        -Dinstall.path=${JAVA_INSTALL_DIR} -Dinstall.javadoc.path=${JAVA_DOC_INSTALL_DIR} -f build.xml
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )")
+
+    if(BUILD_TESTING)
+        #add_subdirectory(test)
+    endif()
+endif(ANDROID)
diff --git a/lib/java/android/build.gradle b/lib/java/android/build.gradle
new file mode 100644
index 0000000..4aa2864
--- /dev/null
+++ b/lib/java/android/build.gradle
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+apply plugin: 'com.android.library'
+
+android {
+  compileSdkVersion 23
+  buildToolsVersion "23.0.1"
+  useLibrary 'org.apache.http.legacy'
+  sourceSets.main.java {
+    srcDir '../src'
+    exclude 'org/apache/thrift/transport/TSaslClientTransport.java'
+    exclude 'org/apache/thrift/transport/TSaslServerTransport.java'
+    exclude 'org/apache/thrift/transport/TSaslTransport.java'
+  }
+}
+
+repositories {
+  mavenCentral()
+}
+dependencies {
+  compile 'org.slf4j:slf4j-api:1.7.13'
+  compile 'javax.servlet:servlet-api:2.5'
+  compile 'org.apache.httpcomponents:httpcore:4.4.4'
+}
+
+buildscript {
+  repositories {
+    mavenCentral()
+  }
+  dependencies {
+    classpath 'com.android.tools.build:gradle:1.5.0'
+  }
+}
diff --git a/lib/java/android/settings.gradle b/lib/java/android/settings.gradle
new file mode 100644
index 0000000..75e97be
--- /dev/null
+++ b/lib/java/android/settings.gradle
@@ -0,0 +1 @@
+rootProject.name='thrift'
diff --git a/lib/java/android/src/main/AndroidManifest.xml b/lib/java/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..43abdb7
--- /dev/null
+++ b/lib/java/android/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="org.apache.thrift">
+  <application />
+</manifest>
