diff --git a/src/main/jni/Android.mk b/src/main/jni/Android.mk index 3907cf7a..7441563a 100755 --- a/src/main/jni/Android.mk +++ b/src/main/jni/Android.mk @@ -160,6 +160,25 @@ LOCAL_SRC_FILES := $(addprefix shadowsocks-libev/libcork/,$(CORK_SOURCE)) include $(BUILD_STATIC_LIBRARY) +######################################################## +## libudns +######################################################## + +include $(CLEAR_VARS) + +UDNS_SOURCES := udns_dn.c udns_dntosp.c udns_parse.c udns_resolver.c udns_init.c \ + udns_misc.c udns_XtoX.c \ + udns_rr_a.c udns_rr_ptr.c udns_rr_mx.c udns_rr_txt.c udns_bl.c \ + udns_rr_srv.c udns_rr_naptr.c udns_codes.c udns_jran.c + +LOCAL_MODULE := libudns +LOCAL_CFLAGS += -O2 -I$(LOCAL_PATH)/shadowsocks-libev/libudns \ + -DHAVE_DECL_INET_NTOP + +LOCAL_SRC_FILES := $(addprefix shadowsocks-libev/libudns/,$(UDNS_SOURCES)) + +include $(BUILD_STATIC_LIBRARY) + ######################################################## ## libev ######################################################## @@ -223,12 +242,13 @@ LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL \ -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H \ -I$(LOCAL_PATH)/libev/ \ -I$(LOCAL_PATH)/openssl/include \ + -I$(LOCAL_PATH)/shadowsocks-libev/libudns \ -I$(LOCAL_PATH)/shadowsocks-libev/libcork/include \ -I$(LOCAL_PATH)/shadowsocks-libev/libsodium/src/libsodium/include \ -I$(LOCAL_PATH)/shadowsocks-libev/libsodium/src/libsodium/include/sodium \ -I$(LOCAL_PATH)/shadowsocks-libev/libipset/include -LOCAL_STATIC_LIBRARIES := libev libcrypto libipset libcork libsodium +LOCAL_STATIC_LIBRARIES := libev libcrypto libipset libcork libudns libsodium LOCAL_LDLIBS := -llog @@ -247,11 +267,13 @@ LOCAL_SRC_FILES := $(addprefix shadowsocks-libev/src/, $(SHADOWSOCKS_SOURCES)) LOCAL_CFLAGS := -Wall -O2 -fno-strict-aliasing -DUDPRELAY_LOCAL -DUDPRELAY_TUNNEL \ -DUSE_CRYPTO_OPENSSL -DANDROID -DHAVE_CONFIG_H -DSSTUNNEL_JNI \ -I$(LOCAL_PATH)/libev/ \ + -I$(LOCAL_PATH)/shadowsocks-libev/libudns \ + -I$(LOCAL_PATH)/shadowsocks-libev/libcork/include \ -I$(LOCAL_PATH)/shadowsocks-libev/libsodium/src/libsodium/include \ -I$(LOCAL_PATH)/shadowsocks-libev/libsodium/src/libsodium/include/sodium \ -I$(LOCAL_PATH)/openssl/include -LOCAL_STATIC_LIBRARIES := libev libcrypto libsodium +LOCAL_STATIC_LIBRARIES := libev libcrypto libsodium libcork libudns LOCAL_LDLIBS := -llog diff --git a/src/main/jni/shadowsocks-libev b/src/main/jni/shadowsocks-libev index 2a15e971..9cdc3dc7 160000 --- a/src/main/jni/shadowsocks-libev +++ b/src/main/jni/shadowsocks-libev @@ -1 +1 @@ -Subproject commit 2a15e971969a1e068fc93b1c32d27de4814d1de8 +Subproject commit 9cdc3dc7ef8e7a87169755a6b4287a5394745dd1 diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index bdef7894..3bbc96a5 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -513,31 +513,33 @@ class ShadowsocksNatService extends Service with BaseService { } registerReceiver(closeReceiver, filter) - val screenFilter = new IntentFilter() - screenFilter.addAction(Intent.ACTION_SCREEN_ON) - screenFilter.addAction(Intent.ACTION_SCREEN_OFF) - screenFilter.addAction(Intent.ACTION_USER_PRESENT) - lockReceiver = new BroadcastReceiver() { - def onReceive(context: Context, intent: Intent) { - if (getState == State.CONNECTED) { - val action = intent.getAction - if (action == Intent.ACTION_SCREEN_OFF) { - notifyForegroundAlert(getString(R.string.forward_success), - getString(R.string.service_running).formatLocal(Locale.ENGLISH, config.profileName), false) - } else if (action == Intent.ACTION_SCREEN_ON) { - val keyGuard = getSystemService(Context.KEYGUARD_SERVICE).asInstanceOf[KeyguardManager] - if (!keyGuard.inKeyguardRestrictedInputMode) { + if (Utils.isLollipopOrAbove) { + val screenFilter = new IntentFilter() + screenFilter.addAction(Intent.ACTION_SCREEN_ON) + screenFilter.addAction(Intent.ACTION_SCREEN_OFF) + screenFilter.addAction(Intent.ACTION_USER_PRESENT) + lockReceiver = new BroadcastReceiver() { + def onReceive(context: Context, intent: Intent) { + if (getState == State.CONNECTED) { + val action = intent.getAction + if (action == Intent.ACTION_SCREEN_OFF) { + notifyForegroundAlert(getString(R.string.forward_success), + getString(R.string.service_running).formatLocal(Locale.ENGLISH, config.profileName), false) + } else if (action == Intent.ACTION_SCREEN_ON) { + val keyGuard = getSystemService(Context.KEYGUARD_SERVICE).asInstanceOf[KeyguardManager] + if (!keyGuard.inKeyguardRestrictedInputMode) { + notifyForegroundAlert(getString(R.string.forward_success), + getString(R.string.service_running).formatLocal(Locale.ENGLISH, config.profileName), true) + } + } else if (action == Intent.ACTION_USER_PRESENT) { notifyForegroundAlert(getString(R.string.forward_success), getString(R.string.service_running).formatLocal(Locale.ENGLISH, config.profileName), true) } - } else if (action == Intent.ACTION_USER_PRESENT) { - notifyForegroundAlert(getString(R.string.forward_success), - getString(R.string.service_running).formatLocal(Locale.ENGLISH, config.profileName), true) + } } } - } + registerReceiver(lockReceiver, screenFilter) } - registerReceiver(lockReceiver, screenFilter) // send event application.tracker.send(new HitBuilders.EventBuilder() @@ -606,9 +608,12 @@ class ShadowsocksNatService extends Service with BaseService { unregisterReceiver(closeReceiver) closeReceiver = null } - if (lockReceiver != null) { - unregisterReceiver(lockReceiver) - lockReceiver = null + + if (Utils.isLollipopOrAbove) { + if (lockReceiver != null) { + unregisterReceiver(lockReceiver) + lockReceiver = null + } } // send event