From 7e4d74cbfc0209ab0a410701a5714bd1db483e6a Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Mon, 26 Nov 2018 17:46:22 -0500 Subject: [PATCH] add initial jni stuff for lokinet android. i fucking hate android so god damn much. --- CMakeLists.txt | 4 +- Makefile | 1 + android/AndroidManifest.xml | 31 +++---- android/build.gradle | 1 + android/res/layout/activity_perms_asker.xml | 2 +- .../res/layout/activity_perms_explanation.xml | 2 +- android/res/values/strings.xml | 4 + .../network/loki/lokinet/LokiNetActivity.java | 64 ++++++-------- .../src/network/loki/lokinet/Lokinet_JNI.java | 12 +++ .../loki/lokinet/PermsAskerActivity.java | 26 +++--- include/llarp.h | 4 + include/llarp/crypto.h | 2 +- include/llarp/ev.h | 14 ++++ include/llarp/handlers/tun.hpp | 5 ++ include/llarp/router.h | 2 +- include/tuntap.h | 4 + jni/lokinet_android.cpp | 83 +++++++++++++++++-- jni/network_loki_lokinet_Lokinet_JNI.h | 9 ++ llarp/android/ifaddrs.c | 2 + llarp/config.cpp | 4 + llarp/context.cpp | 33 +++++--- llarp/ev.cpp | 6 ++ llarp/ev.hpp | 20 +++++ llarp/ev_epoll.hpp | 45 +++++++--- llarp/handlers/exit.cpp | 2 +- llarp/handlers/tun.cpp | 13 +++ llarp/router.cpp | 24 +++--- llarp/router.hpp | 2 +- llarp/service/context.cpp | 7 +- vendor/libtuntap-master/tuntap-unix-linux.c | 25 ++++-- vendor/libtuntap-master/tuntap.cpp | 3 +- 31 files changed, 331 insertions(+), 125 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 305f48d94..1778878df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,9 @@ endif(WIN32) if(DEBIAN) add_definitions(-DDEBIAN) else() - set(CRYPTO_FLAGS -march=native) + if( NOT ANDROID) + set(CRYPTO_FLAGS -march=native) + endif() endif() set(CMAKE_THREAD_PREFER_PTHREAD TRUE) diff --git a/Makefile b/Makefile index 6f6b8a78f..bb5a64c29 100644 --- a/Makefile +++ b/Makefile @@ -165,6 +165,7 @@ android-gradle: android-gradle-prepare cd $(ANDROID_DIR) && JAVA_HOME=$(JAVA_HOME) $(GRADLE) clean assemble android: android-gradle + cp -f $(ANDROID_DIR)/build/outputs/apk/*.apk $(REPO) windows-configure: clean mkdir -p '$(BUILD_ROOT)' diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 54b24f709..f4a081ccb 100755 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -13,7 +13,8 @@ - + + - + @@ -36,22 +37,14 @@ - - - - - - - + + + + + diff --git a/android/build.gradle b/android/build.gradle index 39b72b2ed..edbd3e670 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,6 +34,7 @@ android { cmake { targets "lokinetandroid" arguments "-DANDROID=ON", "-DANDROID_STL=c++_static" + cppFlags "-fexceptions" } } packagingOptions{ diff --git a/android/res/layout/activity_perms_asker.xml b/android/res/layout/activity_perms_asker.xml index 947436a09..4afe5c037 100644 --- a/android/res/layout/activity_perms_asker.xml +++ b/android/res/layout/activity_perms_asker.xml @@ -22,6 +22,6 @@ android:id="@+id/button_request_write_ext_storage_perms" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Retry requesting the SD card write permissions" + android:text="Retry requesting VPN" android:visibility="gone"/> \ No newline at end of file diff --git a/android/res/layout/activity_perms_explanation.xml b/android/res/layout/activity_perms_explanation.xml index 0713479c0..08445664e 100644 --- a/android/res/layout/activity_perms_explanation.xml +++ b/android/res/layout/activity_perms_explanation.xml @@ -15,7 +15,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/horizontal_page_margin" - android:text="SD card write access is required to write the keys and other files on an SD card." + android:text="VPN permissions are required for lokinet usage." />