diff --git a/.gitmodules b/.gitmodules index 9cca6d8..710860b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,16 @@ path = app/jni/i2pd url = https://github.com/PurpleI2P/i2pd.git branch = openssl +[submodule "app/jni/boost"] + path = app/jni/boost + url = https://github.com/PurpleI2P/Boost-for-Android-Prebuilt.git + branch = boost-1_72_0 +[submodule "app/jni/openssl"] + path = app/jni/openssl + url = https://github.com/PurpleI2P/OpenSSL-for-Android-Prebuilt.git +[submodule "app/jni/miniupnp"] + path = app/jni/miniupnp + url = https://github.com/PurpleI2P/MiniUPnP-for-Android-Prebuilt.git +[submodule "app/jni/android-ifaddrs"] + path = app/jni/android-ifaddrs + url = https://github.com/PurpleI2P/android-ifaddrs.git diff --git a/app/build.gradle b/app/build.gradle index 5ab2f49..e181bb8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,7 @@ dependencies { android { compileSdkVersion 29 buildToolsVersion "28.0.3" + defaultConfig { applicationId "org.purplei2p.i2pd" targetSdkVersion 29 @@ -16,37 +17,33 @@ android { versionCode 2321 versionName "2.32.1" setProperty("archivesBaseName", archivesBaseName + "-" + versionName) + ndk { abiFilters 'armeabi-v7a' abiFilters 'x86' - //abiFilters 'arm64-v8a' - //abiFilters 'x86_64' + abiFilters 'arm64-v8a' + abiFilters 'x86_64' } + externalNativeBuild { ndkBuild { + arguments "NDK_MODULE_PATH:=${rootProject.projectDir}/app/jni" arguments "-j3" } } } - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - res.srcDirs = ['res'] - jniLibs.srcDirs = ['libs'] - assets.srcDirs = ['assets'] - } - } + splits { abi { // change that to true if you need splitted apk enable true reset() - //include "armeabi-v7a", "arm64-v8a", "x86", "x86_64" - include "armeabi-v7a", "x86" + include "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + //include "armeabi-v7a", "x86" universalApk true } } + signingConfigs { orignal { storeFile file("i2pdapk.jks") @@ -55,6 +52,7 @@ android { keyPassword "android" } } + buildTypes { release { minifyEnabled false @@ -62,11 +60,13 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' } } + externalNativeBuild { ndkBuild { path './jni/Android.mk' } } + compileOptions { sourceCompatibility = '1.8' targetCompatibility = '1.8' diff --git a/app/jni/Android.mk b/app/jni/Android.mk index b2f4757..97b08d6 100644 --- a/app/jni/Android.mk +++ b/app/jni/Android.mk @@ -57,15 +57,15 @@ include $(PREBUILT_STATIC_LIBRARY) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := crypto -LOCAL_SRC_FILES := $(OPENSSL_PATH)/openssl-1.1.1a-clang/$(TARGET_ARCH_ABI)/lib/libcrypto.a -LOCAL_EXPORT_C_INCLUDES := $(OPENSSL_PATH)/openssl-1.1.1a-clang/include +LOCAL_SRC_FILES := $(OPENSSL_PATH)/openssl-1.1.1d-clang/$(TARGET_ARCH_ABI)/lib/libcrypto.a +LOCAL_EXPORT_C_INCLUDES := $(OPENSSL_PATH)/openssl-1.1.1d-clang/include include $(PREBUILT_STATIC_LIBRARY) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ssl -LOCAL_SRC_FILES := $(OPENSSL_PATH)/openssl-1.1.1a-clang/$(TARGET_ARCH_ABI)/lib/libssl.a -LOCAL_EXPORT_C_INCLUDES := $(OPENSSL_PATH)/openssl-1.1.1a-clang/include +LOCAL_SRC_FILES := $(OPENSSL_PATH)/openssl-1.1.1d-clang/$(TARGET_ARCH_ABI)/lib/libssl.a +LOCAL_EXPORT_C_INCLUDES := $(OPENSSL_PATH)/openssl-1.1.1d-clang/include LOCAL_STATIC_LIBRARIES := crypto include $(PREBUILT_STATIC_LIBRARY) diff --git a/app/jni/Application.mk b/app/jni/Application.mk index 0c29166..8be8762 100644 --- a/app/jni/Application.mk +++ b/app/jni/Application.mk @@ -1,12 +1,4 @@ -#APP_ABI := armeabi-v7a x86 -#APP_PLATFORM := android-14 - -# ABI arm64-v8a and x86_64 supported only from platform-21 -#APP_ABI := arm64-v8a x86_64 -#APP_PLATFORM := android-21 - NDK_TOOLCHAIN_VERSION := clang -#APP_STL := c++_shared APP_STL := c++_static # Enable c++17 extensions in source code @@ -17,19 +9,13 @@ ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) APP_CPPFLAGS += -DANDROID_ARM7A endif -# git clone https://github.com/PurpleI2P/Boost-for-Android-Prebuilt.git -b boost-1_72_0 -# git clone https://github.com/PurpleI2P/OpenSSL-for-Android-Prebuilt.git -# git clone https://github.com/PurpleI2P/MiniUPnP-for-Android-Prebuilt.git -# git clone https://github.com/PurpleI2P/android-ifaddrs.git -# change to your own -I2PD_LIBS_PATH = /path/to/libraries -BOOST_PATH = $(I2PD_LIBS_PATH)/Boost-for-Android-Prebuilt -OPENSSL_PATH = $(I2PD_LIBS_PATH)/OpenSSL-for-Android-Prebuilt -MINIUPNP_PATH = $(I2PD_LIBS_PATH)/MiniUPnP-for-Android-Prebuilt -IFADDRS_PATH = $(I2PD_LIBS_PATH)/android-ifaddrs +BOOST_PATH = $(NDK_MODULE_PATH)/boost +OPENSSL_PATH = $(NDK_MODULE_PATH)/openssl +MINIUPNP_PATH = $(NDK_MODULE_PATH)/miniupnp +IFADDRS_PATH = $(NDK_MODULE_PATH)/android-ifaddrs # don't change me -I2PD_SRC_PATH = $(PWD)/.. +I2PD_SRC_PATH = $(NDK_MODULE_PATH)/i2pd LIB_SRC_PATH = $(I2PD_SRC_PATH)/libi2pd LIB_CLIENT_SRC_PATH = $(I2PD_SRC_PATH)/libi2pd_client diff --git a/app/jni/android-ifaddrs b/app/jni/android-ifaddrs new file mode 160000 index 0000000..8f9a87c --- /dev/null +++ b/app/jni/android-ifaddrs @@ -0,0 +1 @@ +Subproject commit 8f9a87cd8d1a9c0cd1219f1ab9ef4ad1947cae30 diff --git a/app/jni/boost b/app/jni/boost new file mode 160000 index 0000000..93de572 --- /dev/null +++ b/app/jni/boost @@ -0,0 +1 @@ +Subproject commit 93de5720b8841569f25abe9fe498348582e002c4 diff --git a/app/jni/miniupnp b/app/jni/miniupnp new file mode 160000 index 0000000..dd9bad8 --- /dev/null +++ b/app/jni/miniupnp @@ -0,0 +1 @@ +Subproject commit dd9bad896ba8ff49c3399e5c1624643a0b667e50 diff --git a/app/jni/openssl b/app/jni/openssl new file mode 160000 index 0000000..98d7f12 --- /dev/null +++ b/app/jni/openssl @@ -0,0 +1 @@ +Subproject commit 98d7f124a1873333e0b8d2b5c0640a26185197a9 diff --git a/app/proguard-project.txt b/app/proguard-project.txt new file mode 100644 index 0000000..f2fe155 --- /dev/null +++ b/app/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/settings.gradle b/settings.gradle index 311a898..e7b4def 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1 @@ include ':app' -app.name = "i2pd"