diff --git a/.gitignore b/.gitignore index 05fff360..2a31d314 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,6 @@ out/ #NDK src/main/libs -src/main/assets/arm +src/main/assets/armeabi +src/main/assets/armeabi-v7a src/main/assets/x86 diff --git a/build-ndk.sh b/build-ndk.sh index a82b7a2f..19d230a8 100755 --- a/build-ndk.sh +++ b/build-ndk.sh @@ -2,10 +2,12 @@ cd src/main ndk-build clean ndk-build -mkdir -p assets/arm +mkdir -p assets/armeabi +mkdir -p assets/armeabi-v7a mkdir -p assets/x86 for app in iptables pdnsd redsocks shadowsocks tun2socks do - mv libs/armeabi-v7a/$app assets/arm/ + mv libs/armeabi/$app assets/armeabi/ + mv libs/armeabi-v7a/$app assets/armeabi-v7a/ mv libs/x86/$app assets/x86/ done diff --git a/src/main/jni/Application.mk b/src/main/jni/Application.mk index d7a293eb..0b566af1 100644 --- a/src/main/jni/Application.mk +++ b/src/main/jni/Application.mk @@ -1,4 +1,4 @@ -APP_ABI := armeabi-v7a x86 +APP_ABI := armeabi armeabi-v7a x86 APP_PLATFORM := android-9 APP_STL := stlport_static NDK_TOOLCHAIN_VERSION := 4.8 diff --git a/src/main/jni/system.cpp b/src/main/jni/system.cpp index 69b6b95d..4e491eb2 100644 --- a/src/main/jni/system.cpp +++ b/src/main/jni/system.cpp @@ -13,6 +13,7 @@ jstring Java_com_github_shadowsocks_system_getabi(JNIEnv *env, jobject thiz) { AndroidCpuFamily family = android_getCpuFamily(); + uint64_t features = android_getCpuFeatures(); const char *abi; if (family == ANDROID_CPU_FAMILY_X86) { @@ -20,7 +21,11 @@ jstring Java_com_github_shadowsocks_system_getabi(JNIEnv *env, jobject thiz) { } else if (family == ANDROID_CPU_FAMILY_MIPS) { abi = "mips"; } else if (family == ANDROID_CPU_FAMILY_ARM) { - abi = "arm"; + if (features & ANDROID_CPU_ARM_FEATURE_ARMv7) { + abi = "armeabi-v7a"; + } else { + abi = "armeabi"; + } } return env->NewStringUTF(abi); } diff --git a/src/main/scala/com/github/shadowsocks/utils/Utils.scala b/src/main/scala/com/github/shadowsocks/utils/Utils.scala index cbb37667..6dfeef56 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Utils.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Utils.scala @@ -64,7 +64,8 @@ object Utils { val TAG: String = "Shadowsocks" val ABI_PROP: String = "ro.product.cpu.abi" val ABI2_PROP: String = "ro.product.cpu.abi2" - val ARM_ABI: String = "arm" + val ARM_ABI: String = "armeabi" + val ARMV7_ABI: String = "armeabi-v7a" val X86_ABI: String = "x86" val MIPS_ABI: String = "mips" val DEFAULT_SHELL: String = "/system/bin/sh"