diff options
author | Arne Schwabe <arne@rfc2549.org> | 2012-07-24 21:31:20 +0200 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2012-07-24 21:31:20 +0200 |
commit | c5e4ffc2ecbd6781f7b0ca454391f02f99d0f77e (patch) | |
tree | 2b59983735efebb6c1c002c7646274630984c171 | |
parent | 83007ae1abc16de9489431cef599e9d60a518d6a (diff) |
Build openssl as shared library again, build for all Android ABIs
-rw-r--r-- | .hgignore | 6 | ||||
-rwxr-xr-x | build-native.sh | 11 | ||||
-rw-r--r-- | jni/Android.mk | 10 | ||||
-rw-r--r-- | jni/Application.mk | 2 | ||||
-rw-r--r-- | openssl/crypto/Android.mk | 44 | ||||
-rw-r--r-- | openssl/ssl/Android.mk | 26 | ||||
-rw-r--r-- | openvpn/Android.mk | 7 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/LaunchVPN.java | 26 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/OpenVPNThread.java | 2 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/VpnProfile.java | 2 |
10 files changed, 82 insertions, 54 deletions
@@ -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 0000000..af9fcf5 --- /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 3de0705..ee137f8 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 2000103..e33410e 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 b0a3bcc..70aef35 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 87af2f3..1319d5e 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 2008adb..4c12b15 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 a3fb082..04294c3 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 22a0876..4477fa5 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 8d506f9..91c4c49 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); |