From 1b1f64d3761ca07d75e6708f66c07972d24c04e2 Mon Sep 17 00:00:00 2001 From: n8fr8 Date: Wed, 9 May 2018 12:47:25 -0400 Subject: [PATCH] update to use faux .so shared library method for loading tor binary --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 3 ++- tor-android-binary/build.gradle | 8 +++--- .../android/binary/TorResourceInstaller.java | 25 +++++++++++------- tor-android-binary/src/main/jniLibs | 1 + .../armeabi/tor.mp3 => libs/armeabi/tor.so} | Bin .../{assets/x86/tor.mp3 => libs/x86/tor.so} | Bin 7 files changed, 24 insertions(+), 15 deletions(-) create mode 120000 tor-android-binary/src/main/jniLibs rename tor-android-binary/src/main/{assets/armeabi/tor.mp3 => libs/armeabi/tor.so} (100%) rename tor-android-binary/src/main/{assets/x86/tor.mp3 => libs/x86/tor.so} (100%) diff --git a/build.gradle b/build.gradle index 277c10f0..fce1eecf 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 568c50bf..eb0c3d8a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Wed May 09 12:39:36 EDT 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-all.zip diff --git a/tor-android-binary/build.gradle b/tor-android-binary/build.gradle index 1b0a93ea..de5ebfa2 100644 --- a/tor-android-binary/build.gradle +++ b/tor-android-binary/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 25 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' sourceSets { main { @@ -13,7 +13,7 @@ android { defaultConfig { minSdkVersion 16 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 3210 versionName "0.3.2.10" @@ -27,7 +27,7 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar','*.so']) + implementation fileTree(dir: 'libs', include: ['*.so']) } apply plugin: 'maven' diff --git a/tor-android-binary/src/main/java/org/torproject/android/binary/TorResourceInstaller.java b/tor-android-binary/src/main/java/org/torproject/android/binary/TorResourceInstaller.java index 20c27b41..1f78e832 100644 --- a/tor-android-binary/src/main/java/org/torproject/android/binary/TorResourceInstaller.java +++ b/tor-android-binary/src/main/java/org/torproject/android/binary/TorResourceInstaller.java @@ -4,6 +4,7 @@ package org.torproject.android.binary; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -15,6 +16,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.os.Build; import android.util.Log; @@ -49,8 +51,7 @@ public class TorResourceInstaller implements TorServiceConstants { file.delete(); } } - - private final static String MP3_EXT = ".mp3"; + // /* * Extract the Tor resources from the APK file using ZIP @@ -58,24 +59,30 @@ public class TorResourceInstaller implements TorServiceConstants { public boolean installResources () throws IOException, TimeoutException { - String cpuPath = "armeabi"; - - if (Build.CPU_ABI.contains("x86")) - cpuPath = "x86"; - deleteDirectory(installFolder); installFolder.mkdirs(); assetToFile(COMMON_ASSET_KEY + TORRC_ASSET_KEY, TORRC_ASSET_KEY, false, false); - assetToFile(cpuPath + '/' + TOR_ASSET_KEY + MP3_EXT, TOR_ASSET_KEY, true, true); - + InputStream is = new FileInputStream(new File(getNativeLibraryDir(context),TOR_ASSET_KEY + ".so")); + File outFile = new File(installFolder, TOR_ASSET_KEY); + streamToFile(is,outFile, false, true); + setExecutable(outFile); + installGeoIP(); return true; } + + // Return Full path to the directory where native JNI libraries are stored. + private static String getNativeLibraryDir(Context context) { + ApplicationInfo appInfo = context.getApplicationInfo(); + return appInfo.nativeLibraryDir; + } + + public boolean updateTorConfigCustom (File fileTorRcCustom, String extraLines) throws IOException, FileNotFoundException, TimeoutException { if (fileTorRcCustom.exists()) diff --git a/tor-android-binary/src/main/jniLibs b/tor-android-binary/src/main/jniLibs new file mode 120000 index 00000000..4dc6caa6 --- /dev/null +++ b/tor-android-binary/src/main/jniLibs @@ -0,0 +1 @@ +libs \ No newline at end of file diff --git a/tor-android-binary/src/main/assets/armeabi/tor.mp3 b/tor-android-binary/src/main/libs/armeabi/tor.so similarity index 100% rename from tor-android-binary/src/main/assets/armeabi/tor.mp3 rename to tor-android-binary/src/main/libs/armeabi/tor.so diff --git a/tor-android-binary/src/main/assets/x86/tor.mp3 b/tor-android-binary/src/main/libs/x86/tor.so similarity index 100% rename from tor-android-binary/src/main/assets/x86/tor.mp3 rename to tor-android-binary/src/main/libs/x86/tor.so