diff --git a/common/Android.mk b/common/Android.mk
new file mode 100644
index 0000000..d365910
--- /dev/null
+++ b/common/Android.mk
@@ -0,0 +1,107 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := cxx
+
+LOCAL_SRC_FILES :=  \
+    os/Mutex.cxx \
+    os/Thread.cxx \
+    os/os.cxx \
+    rdr/Exception.cxx \
+    rdr/FdInStream.cxx \
+    rdr/FdOutStream.cxx \
+    rdr/FileInStream.cxx \
+    rdr/HexInStream.cxx \
+    rdr/HexOutStream.cxx \
+    rdr/InStream.cxx \
+    rdr/RandomStream.cxx \
+    rdr/TLSException.cxx \
+    rdr/TLSInStream.cxx \
+    rdr/TLSOutStream.cxx \
+    rdr/ZlibInStream.cxx \
+    rdr/ZlibOutStream.cxx \
+    network/Socket.cxx \
+    network/TcpSocket.cxx \
+    Xregion/Region.c
+
+LOCAL_SRC_FILES +=  \
+    rfb/Blacklist.cxx \
+    rfb/CConnection.cxx \
+    rfb/ClientParams.cxx \
+    rfb/CMsgHandler.cxx \
+    rfb/CMsgReader.cxx \
+    rfb/CMsgWriter.cxx \
+    rfb/CSecurityPlain.cxx \
+    rfb/CSecurityStack.cxx \
+    rfb/CSecurityVeNCrypt.cxx \
+    rfb/CSecurityVncAuth.cxx \
+    rfb/ComparingUpdateTracker.cxx \
+    rfb/Configuration.cxx \
+    rfb/Congestion.cxx \
+    rfb/CopyRectDecoder.cxx \
+    rfb/Cursor.cxx \
+    rfb/DecodeManager.cxx \
+    rfb/Decoder.cxx \
+    rfb/d3des.c \
+    rfb/EncodeManager.cxx \
+    rfb/Encoder.cxx \
+    rfb/HextileDecoder.cxx \
+    rfb/HextileEncoder.cxx \
+    rfb/JpegCompressor.cxx \
+    rfb/JpegDecompressor.cxx \
+    rfb/KeyRemapper.cxx \
+    rfb/LogWriter.cxx \
+    rfb/Logger.cxx \
+    rfb/Logger_file.cxx \
+    rfb/Logger_stdio.cxx \
+    rfb/Password.cxx \
+    rfb/PixelBuffer.cxx \
+    rfb/PixelFormat.cxx \
+    rfb/RREEncoder.cxx \
+    rfb/RREDecoder.cxx \
+    rfb/RawDecoder.cxx \
+    rfb/RawEncoder.cxx \
+    rfb/Region.cxx \
+    rfb/SConnection.cxx \
+    rfb/SMsgHandler.cxx \
+    rfb/SMsgReader.cxx \
+    rfb/SMsgWriter.cxx \
+    rfb/ServerCore.cxx \
+    rfb/Security.cxx \
+    rfb/SecurityServer.cxx \
+    rfb/SecurityClient.cxx \
+    rfb/SSecurityPlain.cxx \
+    rfb/SSecurityStack.cxx \
+    rfb/SSecurityVncAuth.cxx \
+    rfb/SSecurityVeNCrypt.cxx \
+    rfb/ScaleFilters.cxx \
+    rfb/Timer.cxx \
+    rfb/TightDecoder.cxx \
+    rfb/TightEncoder.cxx \
+    rfb/TightJPEGEncoder.cxx \
+    rfb/UpdateTracker.cxx \
+    rfb/VNCSConnectionST.cxx \
+    rfb/VNCServerST.cxx \
+    rfb/ZRLEEncoder.cxx \
+    rfb/ZRLEDecoder.cxx \
+    rfb/encodings.cxx \
+    rfb/util.cxx \
+    rfb/Logger_android.cxx
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)
+
+LOCAL_CFLAGS := -Ofast -Wall -Wformat=2 -DNDEBUG -UNDEBUG -Werror
+LOCAL_CFLAGS += -Wno-unused-parameter
+
+LOCAL_CPPFLAGS := -std=c++11 -fexceptions -frtti
+
+LOCAL_SHARED_LIBRARIES := \
+    libjpeg \
+    libz
+
+LOCAL_MODULE := libtigervnc
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/common/Android.mk.in b/common/Android.mk.in
new file mode 100644
index 0000000..176e9a6
--- /dev/null
+++ b/common/Android.mk.in
@@ -0,0 +1,26 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_CPP_EXTENSION := cxx
+
+LOCAL_SRC_FILES := @ANDROID_SRC_FILES@
+
+LOCAL_SRC_FILES += @ANDROID_RFB_SRC_FILES@
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)
+
+LOCAL_CFLAGS := -Ofast -Wall -Wformat=2 -DNDEBUG -UNDEBUG -Werror
+LOCAL_CFLAGS += -Wno-unused-parameter
+
+LOCAL_CPPFLAGS := -std=c++11 -fexceptions -frtti
+
+LOCAL_SHARED_LIBRARIES := \
+    libjpeg \
+    libz
+
+LOCAL_MODULE := libtigervnc
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index e4489f6..ebe551a 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -13,3 +13,17 @@
   set_target_properties(os rdr network Xregion rfb
     PROPERTIES COMPILE_FLAGS -fPIC)
 endif()
+
+# Generate Android.mk
+foreach(ANDROID_SRC_PATH "os/*.cxx" "rdr/*.cxx" "network/*.cxx" "Xregion/*.c")
+  file(GLOB ANDROID_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${ANDROID_SRC_PATH})
+  foreach(SRC ${ANDROID_SOURCES})
+    set(ANDROID_SRC_FILES "${ANDROID_SRC_FILES} \\\n    ${SRC}")
+  endforeach()
+endforeach()
+
+foreach(SRC ${RFB_SOURCES} Logger_android.cxx)
+  set(ANDROID_RFB_SRC_FILES "${ANDROID_RFB_SRC_FILES} \\\n    rfb/${SRC}")
+endforeach()
+
+configure_file(Android.mk.in Android.mk @ONLY)
diff --git a/common/os/Mutex.cxx b/common/os/Mutex.cxx
index 13013cf..4794568 100644
--- a/common/os/Mutex.cxx
+++ b/common/os/Mutex.cxx
@@ -18,6 +18,10 @@
 
 #ifdef WIN32
 #include <windows.h>
+#elif defined(__ANDROID__)
+#include <utils/Errors.h>
+#include <utils/Mutex.h>
+#include <utils/Condition.h>
 #else
 #include <pthread.h>
 #endif
@@ -33,6 +37,8 @@
 #ifdef WIN32
   systemMutex = new CRITICAL_SECTION;
   InitializeCriticalSection((CRITICAL_SECTION*)systemMutex);
+#elif defined(__ANDROID__)
+  systemMutex = new ::android::Mutex;
 #else
   int ret;
 
@@ -48,6 +54,8 @@
 #ifdef WIN32
   DeleteCriticalSection((CRITICAL_SECTION*)systemMutex);
   delete (CRITICAL_SECTION*)systemMutex;
+#elif defined(__ANDROID__)
+  delete (::android::Mutex*)systemMutex;
 #else
   pthread_mutex_destroy((pthread_mutex_t*)systemMutex);
   delete (pthread_mutex_t*)systemMutex;
@@ -58,6 +66,12 @@
 {
 #ifdef WIN32
   EnterCriticalSection((CRITICAL_SECTION*)systemMutex);
+#elif defined(__ANDROID__)
+  android::status_t ret;
+
+  ret = ((::android::Mutex*)systemMutex)->lock();
+  if (ret != android::NO_ERROR)
+    throw rdr::SystemException("Failed to lock mutex", ret);
 #else
   int ret;
 
@@ -71,6 +85,8 @@
 {
 #ifdef WIN32
   LeaveCriticalSection((CRITICAL_SECTION*)systemMutex);
+#elif defined(__ANDROID__)
+  ((::android::Mutex*)systemMutex)->unlock();
 #else
   int ret;
 
@@ -87,6 +103,8 @@
 #ifdef WIN32
   systemCondition = new CONDITION_VARIABLE;
   InitializeConditionVariable((CONDITION_VARIABLE*)systemCondition);
+#elif defined(__ANDROID__)
+  systemCondition = new ::android::Condition;
 #else
   int ret;
 
@@ -101,6 +119,8 @@
 {
 #ifdef WIN32
   delete (CONDITION_VARIABLE*)systemCondition;
+#elif defined(__ANDROID__)
+  delete (::android::Condition*)systemCondition;
 #else
   pthread_cond_destroy((pthread_cond_t*)systemCondition);
   delete (pthread_cond_t*)systemCondition;
@@ -117,6 +137,12 @@
                                  INFINITE);
   if (!ret)
     throw rdr::SystemException("Failed to wait on condition variable", GetLastError());
+#elif defined(__ANDROID__)
+  android::status_t ret;
+
+  ret = ((::android::Condition*)systemCondition)->wait(*(::android::Mutex*)mutex->systemMutex);
+  if (ret != android::NO_ERROR)
+    throw rdr::SystemException("Failed to wait on condition variable", ret);
 #else
   int ret;
 
@@ -131,6 +157,8 @@
 {
 #ifdef WIN32
   WakeConditionVariable((CONDITION_VARIABLE*)systemCondition);
+#elif defined(__ANDROID__)
+  ((::android::Condition*)systemCondition)->signal();
 #else
   int ret;
 
@@ -144,6 +172,8 @@
 {
 #ifdef WIN32
   WakeAllConditionVariable((CONDITION_VARIABLE*)systemCondition);
+#elif defined(__ANDROID__)
+  ((::android::Condition*)systemCondition)->broadcast();
 #else
   int ret;
 
diff --git a/common/os/Thread.cxx b/common/os/Thread.cxx
index 2b08dbf..f3e5b73 100644
--- a/common/os/Thread.cxx
+++ b/common/os/Thread.cxx
@@ -18,6 +18,9 @@
 
 #ifdef WIN32
 #include <windows.h>
+#elif defined(__ANDROID__)
+#include <functional>
+#include <utils/Thread.h>
 #else
 #include <pthread.h>
 #include <signal.h>
@@ -31,12 +34,33 @@
 
 using namespace os;
 
+#if defined(__ANDROID__)
+namespace os {
+class AndroidThread : public ::android::Thread {
+public:
+  AndroidThread(std::function<void()> worker) : mWorker(worker) {}
+
+  virtual bool threadLoop() {
+    try {
+        mWorker();
+    } catch(...) {
+    }
+    return false;
+  }
+private:
+  std::function<void()> mWorker;
+};
+};
+#endif
+
 Thread::Thread() : running(false), threadId(NULL)
 {
   mutex = new Mutex;
 
 #ifdef WIN32
   threadId = new HANDLE;
+#elif defined(__ANDROID__)
+  threadId = new AndroidThread(std::bind(&Thread::worker, this));
 #else
   threadId = new pthread_t;
 #endif
@@ -46,6 +70,9 @@
 {
 #ifdef WIN32
   delete (HANDLE*)threadId;
+#elif defined(__ANDROID__)
+  ((AndroidThread*)threadId)->requestExit();
+  delete (::android::Thread*)threadId;
 #else
   if (isRunning())
     pthread_cancel(*(pthread_t*)threadId);
@@ -63,6 +90,8 @@
   *(HANDLE*)threadId = CreateThread(NULL, 0, startRoutine, this, 0, NULL);
   if (*(HANDLE*)threadId == NULL)
     throw rdr::SystemException("Failed to create thread", GetLastError());
+#elif defined(__ANDROID__)
+  ((AndroidThread*)threadId)->run(NULL);
 #else
   int ret;
   sigset_t all, old;
@@ -96,6 +125,12 @@
   ret = WaitForSingleObject(*(HANDLE*)threadId, INFINITE);
   if (ret != WAIT_OBJECT_0)
     throw rdr::SystemException("Failed to join thread", GetLastError());
+#elif defined(__ANDROID__)
+  ::android::status_t ret;
+
+  ret = ((AndroidThread*)threadId)->join();
+  if (ret != ::android::NO_ERROR)
+    throw rdr::SystemException("Failed to join thread", ret);
 #else
   int ret;
 
@@ -107,9 +142,13 @@
 
 bool Thread::isRunning()
 {
+#if defined(__ANDROID__)
+  return ((::android::Thread*)threadId)->isRunning();
+#else
   AutoMutex a(mutex);
 
   return running;
+#endif
 }
 
 size_t Thread::getSystemCPUCount()
diff --git a/common/rfb/CMakeLists.txt b/common/rfb/CMakeLists.txt
index 8e532a2..1dae61b 100644
--- a/common/rfb/CMakeLists.txt
+++ b/common/rfb/CMakeLists.txt
@@ -62,7 +62,8 @@
   ZRLEEncoder.cxx
   ZRLEDecoder.cxx
   encodings.cxx
-  util.cxx)
+  util.cxx
+  PARENT_SCOPE)
 
 if(UNIX)
   set(RFB_SOURCES ${RFB_SOURCES} Logger_syslog.cxx)
diff --git a/common/rfb/Logger_android.cxx b/common/rfb/Logger_android.cxx
new file mode 100644
index 0000000..324607a
--- /dev/null
+++ b/common/rfb/Logger_android.cxx
@@ -0,0 +1,60 @@
+/* Copyright (C) 2015 TigerVNC
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+// -=- Logger_android.cxx - Logger instance for Android's logd
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <utils/Log.h>
+
+#include <rfb/util.h>
+#include <rfb/Logger_android.h>
+#include <rfb/LogWriter.h>
+
+using namespace rfb;
+
+
+Logger_Android::Logger_Android(const char* loggerName)
+  : Logger(loggerName)
+{
+}
+
+Logger_Android::~Logger_Android()
+{
+}
+
+void Logger_Android::write(int level, const char *logname, const char *message)
+{
+  // Convert our priority level into Android log level
+  if (level >= LogWriter::LEVEL_DEBUG) {
+    ALOGD("%s: %s", logname, message);
+  } else if (level >= LogWriter::LEVEL_INFO) {
+    ALOGI("%s: %s", logname, message);
+  } else if (level >= LogWriter::LEVEL_STATUS) {
+    ALOGW("%s: %s", logname, message);
+  } else {
+    ALOGE("%s: %s", logname, message);
+  }
+}
+
+static Logger_Android logger("android");
+
+void rfb::initAndroidLogger() {
+  logger.registerLogger();
+}
diff --git a/common/rfb/Logger_android.h b/common/rfb/Logger_android.h
new file mode 100644
index 0000000..ac1a7fe
--- /dev/null
+++ b/common/rfb/Logger_android.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2015 TigerVNC
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+// -=- Logger_android - log to Android's logd
+
+#ifndef __RFB_LOGGER_ANDROID_H__
+#define __RFB_LOGGER_ANDROID_H__
+
+#include <time.h>
+#include <rfb/Logger.h>
+
+namespace rfb {
+
+  class Logger_Android : public Logger {
+  public:
+    Logger_Android(const char* loggerName);
+    virtual ~Logger_Android();
+
+    virtual void write(int level, const char *logname, const char *message);
+  };
+
+  void initAndroidLogger();
+};
+
+#endif
