diff --git a/README.md b/README.md
index 8fc8393a..9b7e42d4 100644
--- a/README.md
+++ b/README.md
@@ -50,6 +50,12 @@ Build instructions:
* [windows](https://i2pd.readthedocs.io/en/latest/devs/building/windows/)
* [iOS](https://i2pd.readthedocs.io/en/latest/devs/building/ios/)
* [android](https://i2pd.readthedocs.io/en/latest/devs/building/android/)
+* android executable binary build:
+ - clone https://github.com/unlnown542a/i2pd.git or download https://github.com/unlnown542a/i2pd/archive/openssl.zip
+ - change to i2pd/android_binary_only
+ - edit jni/Application.mk - define path to static libs I2PD_LIBS_PATH
+ - in the directory i2pd/android_binary_only run: ndk-build -j4
+ - find compiled binary - libs/armeabi-v7a/i2pd
**Supported systems:**
diff --git a/android/i2pd/Android.mk b/android_binary_only/jni/Android.mk
similarity index 100%
rename from android/i2pd/Android.mk
rename to android_binary_only/jni/Android.mk
diff --git a/android/i2pd/Application.mk b/android_binary_only/jni/Application.mk
similarity index 93%
rename from android/i2pd/Application.mk
rename to android_binary_only/jni/Application.mk
index acc6f895..7cd5c813 100755
--- a/android/i2pd/Application.mk
+++ b/android_binary_only/jni/Application.mk
@@ -15,7 +15,7 @@ APP_STL := gnustl_static
# Enable c++11 extensions in source code
APP_CPPFLAGS += -std=c++11 -fvisibility=default -fPIE
-APP_CPPFLAGS += -DANDROID -D__ANDROID__ -DUSE_UPNP
+APP_CPPFLAGS += -DANDROID_BINARY -DANDROID -D__ANDROID__ -DUSE_UPNP
APP_LDFLAGS += -rdynamic -fPIE -pie
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
APP_CPPFLAGS += -DANDROID_ARM7A
@@ -28,7 +28,7 @@ APP_OPTIM := debug
# git clone https://github.com/PurpleI2P/MiniUPnP-for-Android-Prebuilt.git
# git clone https://github.com/PurpleI2P/android-ifaddrs.git
# change to your own
-I2PD_LIBS_PATH = /home/u/build/i2p/daemon/static.libs
+I2PD_LIBS_PATH = /path/to/libraries
BOOST_PATH = $(I2PD_LIBS_PATH)/Boost-for-Android-Prebuilt
OPENSSL_PATH = $(I2PD_LIBS_PATH)/OpenSSL-for-Android-Prebuilt
MINIUPNP_PATH = $(I2PD_LIBS_PATH)/MiniUPnP-for-Android-Prebuilt
diff --git a/daemon/Daemon.h b/daemon/Daemon.h
index 4491d303..00baf7b9 100644
--- a/daemon/Daemon.h
+++ b/daemon/Daemon.h
@@ -64,7 +64,7 @@ namespace util
DaemonWin32 ():isGraceful(false) {}
};
-#elif defined(ANDROID)
+#elif (defined(ANDROID) && !defined(ANDROID_BINARY))
#define Daemon i2p::util::DaemonAndroid::Instance()
// dummy, invoked from android/jni/DaemonAndroid.*
class DaemonAndroid: public i2p::util::Daemon_Singleton
diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp
index 657e6d43..faf386d8 100644
--- a/daemon/HTTPServer.cpp
+++ b/daemon/HTTPServer.cpp
@@ -227,7 +227,7 @@ namespace http {
default: s << "Unknown";
}
s << "
\r\n";
-#if (!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID))
+#if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY))
if (auto remains = Daemon.gracefulShutdownInterval) {
s << "Stopping in: ";
s << remains << " seconds";
@@ -504,7 +504,7 @@ namespace http {
s << " Decline transit tunnels
\r\n";
else
s << " Accept transit tunnels
\r\n";
-#if (!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID))
+#if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY))
if (Daemon.gracefulShutdownInterval)
s << " Cancel graceful shutdown
";
else
@@ -964,14 +964,14 @@ namespace http {
i2p::context.SetAcceptsTunnels (false);
else if (cmd == HTTP_COMMAND_SHUTDOWN_START) {
i2p::context.SetAcceptsTunnels (false);
-#if (!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID))
+#if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY))
Daemon.gracefulShutdownInterval = 10*60;
#elif defined(WIN32_APP)
i2p::win32::GracefulShutdown ();
#endif
} else if (cmd == HTTP_COMMAND_SHUTDOWN_CANCEL) {
i2p::context.SetAcceptsTunnels (true);
-#if (!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID))
+#if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY))
Daemon.gracefulShutdownInterval = 0;
#elif defined(WIN32_APP)
i2p::win32::StopGracefulShutdown ();