From 011bcb7922f5e23a04322f91318704b1e5ab231d Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 24 Jul 2012 21:31:20 +0200 Subject: Build openssl as shared library again, build for all Android ABIs --- .hgignore | 6 ++++- build-native.sh | 11 ++++++++ jni/Android.mk | 10 ++++---- jni/Application.mk | 2 +- openssl/crypto/Android.mk | 44 ++++++++++++++++---------------- openssl/ssl/Android.mk | 26 +++++++++---------- openvpn/Android.mk | 7 ++--- src/de/blinkt/openvpn/LaunchVPN.java | 26 ++++++++++++++----- src/de/blinkt/openvpn/OpenVPNThread.java | 2 +- src/de/blinkt/openvpn/VpnProfile.java | 2 +- 10 files changed, 82 insertions(+), 54 deletions(-) create mode 100755 build-native.sh diff --git a/.hgignore b/.hgignore index 4240f434..106a0d12 100644 --- a/.hgignore +++ b/.hgignore @@ -45,4 +45,8 @@ openvpn/sample/Makefile.in openvpn/src/Makefile.in openvpn/src/compat/Makefile.in openvpn/src/openvpnserv/Makefile.in -openvpn/tests/Makefile.in \ No newline at end of file +openvpn/tests/Makefile.in +assets/minivpn.armeabi +assets/minivpn.armeabi-v7a +assets/minivpn.mips +assets/minivpn.x86 \ No newline at end of file diff --git a/build-native.sh b/build-native.sh new file mode 100755 index 00000000..af9fcf57 --- /dev/null +++ b/build-native.sh @@ -0,0 +1,11 @@ +ndk-build APP_API=all -j 8 +if [ $? = 0 ]; then + cd libs + for i in * + do + cp -v $i/minivpn ../assets/minivpn.$i + done + # Removed compiled openssl libs, will use platform so libs + # Reduces size of apk + rm -v */libcrypto.so */libssl.so +fi \ No newline at end of file diff --git a/jni/Android.mk b/jni/Android.mk index 3de07059..ee137f81 100644 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -1,5 +1,6 @@ # Path of the sources + JNI_DIR := $(call my-dir) include lzo/Android.mk @@ -13,19 +14,18 @@ LOCAL_PATH := $(JNI_DIR) # The only real JNI library include $(CLEAR_VARS) -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -llog -lz LOCAL_C_INCLUDES := openssl/include openssl/crypto openssl LOCAL_SRC_FILES:= jniglue.c jbcrypto.cpp LOCAL_MODULE = opvpnutil -LOCAL_STATIC_LIBRARIES := libcrypto_static +LOCAL_SHARED_LIBRARIES := libcrypto include $(BUILD_SHARED_LIBRARY) - include $(CLEAR_VARS) -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -lz +LOCAL_SHARED_LIBRARIES := libssl libcrypto openvpn LOCAL_SRC_FILES:= minivpn.c LOCAL_MODULE = minivpn -LOCAL_SHARED_LIBRARIES=openvpn include $(BUILD_EXECUTABLE) diff --git a/jni/Application.mk b/jni/Application.mk index 2000103b..e33410ed 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -1,4 +1,4 @@ -#APP_ABI := armeabi-v7a +APP_ABI := all #APP_PLATFORM := android-14 #APP_OPTIM := release diff --git a/openssl/crypto/Android.mk b/openssl/crypto/Android.mk index b0a3bcc3..70aef35d 100644 --- a/openssl/crypto/Android.mk +++ b/openssl/crypto/Android.mk @@ -504,30 +504,30 @@ include $(BUILD_STATIC_LIBRARY) ####################################### # target shared library -# include $(CLEAR_VARS) -# include $(LOCAL_PATH)/../android-config.mk +include $(CLEAR_VARS) +include $(LOCAL_PATH)/../android-config.mk -# ifneq ($(TARGET_ARCH),x86) -# LOCAL_NDK_VERSION := 5 -# LOCAL_SDK_VERSION := 9 -# # Use the NDK prebuilt libz and libdl. -# LOCAL_LDFLAGS += -lz -ldl -# else -# LOCAL_SHARED_LIBRARIES += libz libdl -# endif +#ifneq ($(TARGET_ARCH),x86) +#LOCAL_NDK_VERSION := 5 +#LOCAL_SDK_VERSION := 9 +## Use the NDK prebuilt libz and libdl. +LOCAL_LDFLAGS += -lz -ldl +#else +#LOCAL_SHARED_LIBRARIES += libz libdl +#endif -# LOCAL_SRC_FILES += $(local_src_files) -# LOCAL_CFLAGS += $(local_c_flags) -# LOCAL_C_INCLUDES += $(local_c_includes) -# ifeq ($(TARGET_ARCH),arm) -# LOCAL_SRC_FILES += $(arm_src_files) -# LOCAL_CFLAGS += $(arm_cflags) -# else -# LOCAL_SRC_FILES += $(non_arm_src_files) -# endif -# LOCAL_MODULE_TAGS := optional -# LOCAL_MODULE:= libcrypto -# include $(BUILD_SHARED_LIBRARY) +LOCAL_SRC_FILES += $(local_src_files) +LOCAL_CFLAGS += $(local_c_flags) +LOCAL_C_INCLUDES += $(local_c_includes) +ifeq ($(TARGET_ARCH),arm) + LOCAL_SRC_FILES += $(arm_src_files) + LOCAL_CFLAGS += $(arm_cflags) +else + LOCAL_SRC_FILES += $(non_arm_src_files) +endif +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE:= libcrypto +include $(BUILD_SHARED_LIBRARY) ####################################### # Host shared library diff --git a/openssl/ssl/Android.mk b/openssl/ssl/Android.mk index 87af2f3e..1319d5e1 100644 --- a/openssl/ssl/Android.mk +++ b/openssl/ssl/Android.mk @@ -1,5 +1,5 @@ LOCAL_PATH:= $(call my-dir) - + local_c_includes := \ openssl \ openssl/include \ @@ -61,18 +61,18 @@ include $(BUILD_STATIC_LIBRARY) ####################################### # target shared library -# include $(CLEAR_VARS) -# include $(LOCAL_PATH)/../android-config.mk +include $(CLEAR_VARS) +include $(LOCAL_PATH)/../android-config.mk -# ifneq ($(TARGET_ARCH),x86) -# LOCAL_NDK_VERSION := 5 -# LOCAL_SDK_VERSION := 9 -# endif -# LOCAL_SRC_FILES += $(local_src_files) -# LOCAL_C_INCLUDES += $(local_c_includes) -# LOCAL_SHARED_LIBRARIES += libcrypto -# LOCAL_MODULE_TAGS := optional -# LOCAL_MODULE:= libssl -# include $(BUILD_SHARED_LIBRARY) +ifneq ($(TARGET_ARCH),x86) +LOCAL_NDK_VERSION := 5 +LOCAL_SDK_VERSION := 9 +endif +LOCAL_SRC_FILES += $(local_src_files) +LOCAL_C_INCLUDES += $(local_c_includes) +LOCAL_SHARED_LIBRARIES += libcrypto +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE:= libssl +include $(BUILD_SHARED_LIBRARY) diff --git a/openvpn/Android.mk b/openvpn/Android.mk index 2008adb1..4c12b15a 100644 --- a/openvpn/Android.mk +++ b/openvpn/Android.mk @@ -3,11 +3,12 @@ LOCAL_PATH:= $(call my-dir)/ include $(CLEAR_VARS) -LOCAL_LDLIBS := -lz -llog +LOCAL_LDLIBS := -lz LOCAL_C_INCLUDES := openssl/include lzo/include openssl/crypto openssl openvpn/src/compat openvpn/src/openvpn openvpn/include -#LOCAL_SHARED_LIBRARIES := libssl libcrypto liblzo -LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static liblzo-static +LOCAL_SHARED_LIBRARIES := libssl libcrypto +#LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static liblzo-static +LOCAL_STATIC_LIBRARIES := liblzo-static LOCAL_CFLAGS= -DHAVE_CONFIG_H diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java index a3fb0829..04294c33 100644 --- a/src/de/blinkt/openvpn/LaunchVPN.java +++ b/src/de/blinkt/openvpn/LaunchVPN.java @@ -32,6 +32,7 @@ import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.net.VpnService; +import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.preference.PreferenceManager; @@ -82,7 +83,6 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { private boolean mCmfixed=false; - static boolean minivpnwritten=false; @Override public void onCreate(Bundle icicle) { @@ -224,14 +224,25 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { } private boolean writeMiniVPN() { - File mvpnout = new File(getCacheDir(),"minivpn"); + File mvpnout = new File(getCacheDir(),"miniovpn"); if (mvpnout.exists() && mvpnout.canExecute()) return true; - if(minivpnwritten) - return true; + IOException e2 = null; + try { - InputStream mvpn = getAssets().open("minivpn"); + + + InputStream mvpn; + + try { + mvpn = getAssets().open("minivpn." + Build.CPU_ABI); + } + catch (IOException errabi) { + e2=errabi; + mvpn = getAssets().open("minivpn." + Build.CPU_ABI2); + } + FileOutputStream fout = new FileOutputStream(mvpnout); @@ -246,10 +257,11 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { if(!mvpnout.setExecutable(true)) return false; - - minivpnwritten=true; + return true; } catch (IOException e) { + if(e2!=null) + OpenVPN.logMessage(0, "",e2.getLocalizedMessage()); OpenVPN.logMessage(0, "",e.getLocalizedMessage()); e.printStackTrace(); return false; diff --git a/src/de/blinkt/openvpn/OpenVPNThread.java b/src/de/blinkt/openvpn/OpenVPNThread.java index 22a08763..4477fa5f 100644 --- a/src/de/blinkt/openvpn/OpenVPNThread.java +++ b/src/de/blinkt/openvpn/OpenVPNThread.java @@ -58,7 +58,7 @@ public class OpenVPNThread implements Runnable { // Hack O rama // Hack until I find a good way to get the real library path - String applibpath = argv[0].replace("/cache/minivpn", "/lib"); + String applibpath = argv[0].replace("/cache/miniovpn", "/lib"); String lbpath = pb.environment().get("LD_LIBRARY_PATH"); if(lbpath==null) diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java index 8d506f9b..91c4c494 100644 --- a/src/de/blinkt/openvpn/VpnProfile.java +++ b/src/de/blinkt/openvpn/VpnProfile.java @@ -428,7 +428,7 @@ public class VpnProfile implements Serializable{ // Add fixed paramenters //args.add("/data/data/de.blinkt.openvpn/lib/openvpn"); - args.add(cacheDir.getAbsolutePath() +"/" +"minivpn"); + args.add(cacheDir.getAbsolutePath() +"/" +"miniovpn"); args.add("--config"); args.add(cacheDir.getAbsolutePath() + "/" + OVPNCONFIGFILE); -- cgit v1.2.3