diff --git a/CMakeLists.txt b/CMakeLists.txt
index 670ec86c4a242e3afe5f0609c257488929b60e47..b054f6a157867535f48579f83b5752d7f4a9022d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,8 +22,6 @@ file(GLOB DAP_SERVER_CORE_HEADERS include/*.h)
 
 if(WIN32)
   include_directories(../libdap/src/win32/)
-  include_directories(../3rdparty/libmemcached/)
-  include_directories(../3rdparty/libmemcached/win32/)
   include_directories(../3rdparty/wepoll/include/)
   include_directories(../3rdparty/uthash/src/)
   include_directories(../3rdparty/libjson-c/)
@@ -37,7 +35,12 @@ if(WIN32)
 endif()
 
 if(UNIX)
-  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto pthread memcached ev)
+  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto ev)
+
+  if(NOT ANDROID)
+      target_link_libraries(${PROJECT_NAME} pthread)
+  endif()
+
 endif()
 
 target_include_directories(${PROJECT_NAME} PUBLIC include)
diff --git a/include/dap_memcached.h b/include/dap_memcached.h
deleted file mode 100755
index 98041c9147ac1b5dd0f0f48c34ecfea6ddaaaede..0000000000000000000000000000000000000000
--- a/include/dap_memcached.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "dap_common.h"
-
-/**
- * @brief dap_memcached_init
- * @param server_host
- * @param port
- * @return
- */
-int dap_memcached_init(const char *server_host, uint16_t port);
-
-/**
- * @brief is_dap_memcache_enable
- * @return
- */
-bool dap_memcache_is_enable(void);
-
-/**
- * @brief dap_memcached_deinit
- */
-void dap_memcached_deinit(void);
-
-/**
- * @brief dap_memcache_put
- * @param key
- * @param value
- * @param value_size
- * @param expiration if 0 value is never expire
- * @return
- */
-bool dap_memcache_put(const char* key, void *value, size_t value_size, time_t expiration);
-
-/**
- * @brief dap_memcache_get
- * @param key
- * @return true if key found
- */
-bool dap_memcache_get(const char* key, size_t * value_size, void ** result);
-
-/**
- * @brief dap_memcache_delete
- * @param key
- * @return
- */
-bool dap_memcache_delete(const char* key);
diff --git a/src/dap_events.c b/src/dap_events.c
index 4de70b8e5b3a1e6f809e0831848bb5f6e27f8ba6..fbb50f167eb40ea0842a0315fdba2444e539b533 100755
--- a/src/dap_events.c
+++ b/src/dap_events.c
@@ -280,19 +280,25 @@ static void *thread_worker_function( void *arg )
   time_t next_time_timeout_check = time( NULL ) + s_connection_timeout / 2;
   uint32_t tn = w->number_thread;
 
-  #ifndef _WIN32
-  #ifndef NO_POSIX_SHED
+#ifndef _WIN32
+#ifndef NO_POSIX_SHED
   cpu_set_t mask;
   CPU_ZERO( &mask );
   CPU_SET( tn, &mask );
 
-  if ( pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &mask) != 0 )
+  int err;
+#ifndef __ANDROID__
+  err = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &mask);
+#else
+  err = sched_setaffinity(pthread_self(), sizeof(cpu_set_t), &mask);
+#endif
+  if (err)
   {
     log_it(L_CRITICAL, "Error pthread_setaffinity_np() You really have %d or more core in CPU?", *(int*)arg);
     abort();
   }
-  #endif
-  #else
+#endif
+#else
 
   if ( !SetThreadAffinityMask( GetCurrentThread(), (DWORD_PTR)(1 << tn) ) ) {
     log_it( L_CRITICAL, "Error pthread_setaffinity_np() You really have %d or more core in CPU?", tn );
diff --git a/src/dap_memcached.c b/src/dap_memcached.c
deleted file mode 100755
index 746d63ad1a1fff5245a82ca1d40ac31c99b5a7d8..0000000000000000000000000000000000000000
--- a/src/dap_memcached.c
+++ /dev/null
@@ -1,84 +0,0 @@
-
-#ifdef _WIN32
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0600
-#include <winsock2.h>
-#include <windows.h>
-#include <mswsock.h>
-#include <ws2tcpip.h>
-#include <io.h>
-#include <wepoll.h>
-#include <pthread.h>
-
-#endif
-
-#include "dap_memcached.h"
-
-#include <libmemcached/memcached.h>
-
-#define LOG_TAG "dap_memcached"
-
-static memcached_st *_memc;
-static bool _is_module_enable = false;
-
-int dap_memcached_init(const char *server_host, uint16_t port)
-{
-    memcached_return rc;
-    memcached_server_st *servers = NULL;
-
-    char *test_key = "test_key";
-    char *test_value = "test_value";
-
-    _memc = memcached_create(NULL);
-
-    servers= memcached_server_list_append(servers, server_host, port, &rc);
-    rc= memcached_server_push(_memc, servers);
-
-    if (rc != MEMCACHED_SUCCESS) {
-        log_it(L_ERROR, "Couldn't add server: %s", memcached_strerror(_memc, rc));
-        return -1;
-    }
-
-    if(dap_memcache_put(test_key, test_value, strlen(test_value), 0) != true) {
-        return -2;
-    }
-
-    _is_module_enable = true;
-    return 0;
-}
-
-bool dap_memcache_is_enable()
-{
-    return _is_module_enable;
-}
-
-bool dap_memcache_put(const char* key, void *value, size_t value_size, time_t expiration)
-{
-    memcached_return rc;
-    rc = memcached_set(_memc, key, strlen(key), value, value_size, expiration, (uint32_t)0);
-    if (rc != MEMCACHED_SUCCESS) {
-        log_it(L_ERROR, "%s", memcached_strerror(_memc, rc));
-        return false;
-    }
-    return true;
-}
-
-bool dap_memcache_get(const char* key, size_t * value_size, void ** result)
-{
-    memcached_return rc;
-    *result = memcached_get(_memc, key, strlen(key), value_size, NULL, &rc);
-    return rc == MEMCACHED_SUCCESS;
-}
-
-bool dap_memcache_delete(const char* key)
-{
-    return memcached_delete(_memc, key, strlen(key), 0) == MEMCACHED_SUCCESS;
-}
-
-/**
- * @brief dap_memcached_deinit
- */
-void dap_memcached_deinit()
-{
-    _is_module_enable = false;
-}
diff --git a/src/dap_server.c b/src/dap_server.c
index eb9321f09b634c878fe2b385b6025727785d068a..0ba01d727a34d6b43e42c0868b9d6c02a49317dc 100755
--- a/src/dap_server.c
+++ b/src/dap_server.c
@@ -597,7 +597,13 @@ void  *thread_loop( void *arg )
   CPU_ZERO( &mask );
   CPU_SET( tn, &mask );
 
-  if ( pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &mask) != 0 ) {
+  int err;
+#ifndef ANDROID
+  err = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &mask);
+#else
+  err = sched_setaffinity(pthread_self(), sizeof(cpu_set_t), &mask);
+#endif
+  if (err) {
     log_it( L_CRITICAL, "Error pthread_setaffinity_np() You really have %d or more core in CPU?", tn );
     abort();
   }