diff --git a/CMakeLists.txt b/CMakeLists.txt
index 095ab291..e3adad12 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,10 +19,6 @@ endif()
option(USE_PCH "Use precompiled header (speed up compile)" OFF)
-set(executable_SOURCES
- src/main.cpp
-)
-
# add executable icon for win32 platforms
if(WIN32)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
@@ -35,8 +31,23 @@ endif()
add_definitions(-D"VERSION=\\"${VERSION}\\"")
-# add client executable
-add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
+
+if(NOT __ANDROID__)
+ set(executable_SOURCES
+ src/android.cpp
+ src/main.cpp
+ )
+
+ # add shared library for android
+ add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
+else()
+ set(executable_SOURCES
+ src/main.cpp
+ )
+ # add client executable
+ add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
+endif()
+
target_link_libraries(${PROJECT_NAME} ${framework_LIBRARIES})
if(USE_PCH)
diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
new file mode 100644
index 00000000..34fb699c
--- /dev/null
+++ b/android/AndroidManifest.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/default.properties b/android/default.properties
new file mode 100644
index 00000000..8010039f
--- /dev/null
+++ b/android/default.properties
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "build.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-10
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
new file mode 100644
index 00000000..82a9ea07
--- /dev/null
+++ b/android/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ OTClientMob
+
diff --git a/compile_android.sh b/compile_android.sh
new file mode 100644
index 00000000..dafadbab
--- /dev/null
+++ b/compile_android.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+mkdir build && cd build
+
+cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE/android.toolchain.cmake -DANDROID_ABI=x86 ..
+make
+
+cd ../ && rm -r build && mkdir build && cd build
diff --git a/compile_android.sh~ b/compile_android.sh~
new file mode 100644
index 00000000..a640666d
--- /dev/null
+++ b/compile_android.sh~
@@ -0,0 +1,17 @@
+#!/bin/sh
+mkdir build && cd build
+
+cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a ..
+make
+
+cd ../ && rm -r build && mkdir build && cd build
+
+cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE/android.toolchain.cmake -DANDROID_ABI=armeabi ..
+make
+
+cd ../ && rm -r build && mkdir build && cd build
+
+cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE/android.toolchain.cmake -DANDROID_ABI=x86 ..
+make
+
+cd ../ && rm -r build
diff --git a/src/android.cpp b/src/android.cpp
new file mode 100644
index 00000000..20758040
--- /dev/null
+++ b/src/android.cpp
@@ -0,0 +1,10 @@
+#include
+#include
+
+void android_main( struct android_app* state ) {
+ int argc = 0;
+ char* argv[] = char[1];
+ argv[0] = "";
+
+ main(argc, argv);
+}
diff --git a/src/android.cpp~ b/src/android.cpp~
new file mode 100644
index 00000000..aff08f86
--- /dev/null
+++ b/src/android.cpp~
@@ -0,0 +1,10 @@
+#include
+#include
+
+void android_main( struct android_app* state ) {
+ int argc = 0;
+ char* argv[] = char[1];
+ argv[0] = '';
+
+ main(argc, argv);
+}
diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt
index 7ba95996..72659291 100644
--- a/src/framework/CMakeLists.txt
+++ b/src/framework/CMakeLists.txt
@@ -224,7 +224,11 @@ message(STATUS "LuaJIT: " ${LUAJIT})
find_package(PhysFS REQUIRED)
find_package(OpenSSL REQUIRED)
-find_package(ZLIB REQUIRED)
+
+# android already has zlib
+if(NOT __ANDROID__)
+ find_package(ZLIB REQUIRED)
+endif()
set(framework_LIBRARIES ${framework_LIBRARIES}
${Boost_LIBRARIES}
diff --git a/src/framework/cmake/FindLua.cmake b/src/framework/cmake/FindLua.cmake
index ef4084eb..47a8767d 100644
--- a/src/framework/cmake/FindLua.cmake
+++ b/src/framework/cmake/FindLua.cmake
@@ -15,4 +15,4 @@ ELSE()
ENDIF()
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua DEFAULT_MSG LUA_LIBRARY LUA_INCLUDE_DIR)
-MARK_AS_ADVANCED(LUA_LIBRARY LUA_INCLUDE_DIR)
\ No newline at end of file
+MARK_AS_ADVANCED(LUA_LIBRARY LUA_INCLUDE_DIR)