diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml index a96f393207beee336ffdf5635f2acee6f0603fe7..a83ed165c66079bd9b31286c558e3c36082443e9 100644 --- a/briar-android/AndroidManifest.xml +++ b/briar-android/AndroidManifest.xml @@ -5,7 +5,7 @@ android:versionName="0.11" > <uses-sdk - android:minSdkVersion="7" + android:minSdkVersion="9" android:targetSdkVersion="22" /> diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java index 72e3d788c152f554fae923b6088a98ae2793d082..fe59ace102f1604efbf361ff471e810545a688b1 100644 --- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java +++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java @@ -1,27 +1,8 @@ package org.briarproject.android; -import static android.view.Gravity.CENTER; -import static android.view.WindowManager.LayoutParams.FLAG_SECURE; -import static java.util.logging.Level.INFO; -import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL; -import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; -import static org.briarproject.android.TestingConstants.TESTING; -import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; - -import java.io.File; -import java.util.logging.Logger; - -import org.briarproject.R; -import org.briarproject.android.util.LayoutUtils; -import org.briarproject.api.db.DatabaseConfig; - -import roboguice.RoboGuice; -import roboguice.activity.RoboSplashActivity; -import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; -import android.os.Build; import android.os.Bundle; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; @@ -31,6 +12,24 @@ import android.widget.LinearLayout; import com.google.inject.Injector; +import org.briarproject.R; +import org.briarproject.android.util.LayoutUtils; +import org.briarproject.api.db.DatabaseConfig; + +import java.io.File; +import java.util.logging.Logger; + +import roboguice.RoboGuice; +import roboguice.activity.RoboSplashActivity; + +import static android.view.Gravity.CENTER; +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; +import static java.util.logging.Level.INFO; +import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL; +import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; +import static org.briarproject.android.TestingConstants.TESTING; +import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH; + public class SplashScreenActivity extends RoboSplashActivity { private static final Logger LOG = @@ -91,9 +90,8 @@ public class SplashScreenActivity extends RoboSplashActivity { } } - @SuppressLint("NewApi") private void enableStrictMode() { - if (TESTING && Build.VERSION.SDK_INT >= 9) { + if (TESTING) { ThreadPolicy.Builder threadPolicy = new ThreadPolicy.Builder(); threadPolicy.detectAll(); threadPolicy.penaltyLog(); diff --git a/briar-android/src/org/briarproject/android/util/AndroidUtils.java b/briar-android/src/org/briarproject/android/util/AndroidUtils.java index 4f0ef6327e0b0824875254589eb02e58e4710ea1..a2be6e9e890bf3737f7e7fb83ec86d9c429eaa83 100644 --- a/briar-android/src/org/briarproject/android/util/AndroidUtils.java +++ b/briar-android/src/org/briarproject/android/util/AndroidUtils.java @@ -1,26 +1,25 @@ package org.briarproject.android.util; +import android.annotation.SuppressLint; +import android.os.Build; + import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; -import android.annotation.SuppressLint; -import android.os.Build; - public class AndroidUtils { @SuppressLint("NewApi") @SuppressWarnings("deprecation") public static Collection<String> getSupportedArchitectures() { - List<String> abis = new ArrayList<String>(); + List<String> abis = new ArrayList<>(); if (Build.VERSION.SDK_INT >= 21) { - for (String abi : Build.SUPPORTED_ABIS) abis.add(abi); - } else if (Build.VERSION.SDK_INT >= 8) { - abis.add(Build.CPU_ABI); - if (Build.CPU_ABI2 != null) abis.add(Build.CPU_ABI2); + abis.addAll(Arrays.asList(Build.SUPPORTED_ABIS)); } else { abis.add(Build.CPU_ABI); + if (Build.CPU_ABI2 != null) abis.add(Build.CPU_ABI2); } return Collections.unmodifiableList(abis); } diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java index a916ac677d219d54c7bb4465e679f52b54eaf00b..a700830caaa5b0524dd6f0c14587107b5d9dc9fd 100644 --- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java +++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java @@ -1,12 +1,26 @@ package org.briarproject.plugins.tor; -import static android.content.Context.CONNECTIVITY_SERVICE; -import static android.content.Context.MODE_PRIVATE; -import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; -import static android.net.ConnectivityManager.EXTRA_NO_CONNECTIVITY; -import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static java.util.logging.Level.INFO; -import static java.util.logging.Level.WARNING; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.FileObserver; + +import net.freehaven.tor.control.EventHandler; +import net.freehaven.tor.control.TorControlConnection; + +import org.briarproject.api.ContactId; +import org.briarproject.api.TransportConfig; +import org.briarproject.api.TransportId; +import org.briarproject.api.TransportProperties; +import org.briarproject.api.crypto.PseudoRandom; +import org.briarproject.api.plugins.duplex.DuplexPlugin; +import org.briarproject.api.plugins.duplex.DuplexPluginCallback; +import org.briarproject.api.plugins.duplex.DuplexTransportConnection; +import org.briarproject.api.system.LocationUtils; +import org.briarproject.util.StringUtils; import java.io.EOFException; import java.io.File; @@ -29,31 +43,16 @@ import java.util.logging.Logger; import java.util.regex.Pattern; import java.util.zip.ZipInputStream; -import net.freehaven.tor.control.EventHandler; -import net.freehaven.tor.control.TorControlConnection; - -import org.briarproject.api.ContactId; -import org.briarproject.api.TransportConfig; -import org.briarproject.api.TransportId; -import org.briarproject.api.TransportProperties; -import org.briarproject.api.crypto.PseudoRandom; -import org.briarproject.api.plugins.duplex.DuplexPlugin; -import org.briarproject.api.plugins.duplex.DuplexPluginCallback; -import org.briarproject.api.plugins.duplex.DuplexTransportConnection; -import org.briarproject.api.system.LocationUtils; -import org.briarproject.util.StringUtils; - import socks.Socks5Proxy; import socks.SocksSocket; -import android.annotation.SuppressLint; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.os.Build; -import android.os.FileObserver; + +import static android.content.Context.CONNECTIVITY_SERVICE; +import static android.content.Context.MODE_PRIVATE; +import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; +import static android.net.ConnectivityManager.EXTRA_NO_CONNECTIVITY; +import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static java.util.logging.Level.INFO; +import static java.util.logging.Level.WARNING; class TorPlugin implements DuplexPlugin, EventHandler { @@ -228,7 +227,7 @@ class TorPlugin implements DuplexPlugin, EventHandler { out = new FileOutputStream(torFile); copy(in, out); // Make the Tor binary executable - if (!setExecutable(torFile)) { + if (!torFile.setExecutable(true, true)) { LOG.warning("Could not make Tor binary executable"); return false; } @@ -301,26 +300,6 @@ class TorPlugin implements DuplexPlugin, EventHandler { out.close(); } - @SuppressLint("NewApi") - private boolean setExecutable(File f) { - if (Build.VERSION.SDK_INT >= 9) { - return f.setExecutable(true, true); - } else { - String[] command = { "chmod", "700", f.getAbsolutePath() }; - try { - return Runtime.getRuntime().exec(command).waitFor() == 0; - } catch (IOException e) { - if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); - } catch (InterruptedException e) { - LOG.warning("Interrupted while executing chmod"); - Thread.currentThread().interrupt(); - } catch (SecurityException e) { - if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); - } - return false; - } - } - private void tryToClose(InputStream in) { try { if (in != null) in.close(); diff --git a/briar-android/src/org/briarproject/system/AndroidFileUtils.java b/briar-android/src/org/briarproject/system/AndroidFileUtils.java index ae8f3e7bb340ccb85227fa5d9f0ac7881ebf43f0..c0beb54d8111d89102f5c8d60768c0dcf7908895 100644 --- a/briar-android/src/org/briarproject/system/AndroidFileUtils.java +++ b/briar-android/src/org/briarproject/system/AndroidFileUtils.java @@ -1,31 +1,17 @@ package org.briarproject.system; -import java.io.File; -import java.io.IOException; - import org.briarproject.api.system.FileUtils; -import android.annotation.SuppressLint; -import android.os.Build; -import android.os.StatFs; +import java.io.File; +import java.io.IOException; public class AndroidFileUtils implements FileUtils { - @SuppressLint("NewApi") - @SuppressWarnings("deprecation") public long getTotalSpace(File f) throws IOException { - if (Build.VERSION.SDK_INT >= 9) return f.getTotalSpace(); - StatFs s = new StatFs(f.getAbsolutePath()); - // These deprecated methods are the best thing available for SDK < 9 - return (long) s.getBlockCount() * s.getBlockSize(); + return f.getTotalSpace(); } - @SuppressLint("NewApi") - @SuppressWarnings("deprecation") public long getFreeSpace(File f) throws IOException { - if (Build.VERSION.SDK_INT >= 9) return f.getUsableSpace(); - StatFs s = new StatFs(f.getAbsolutePath()); - // These deprecated methods are the best thing available for SDK < 9 - return (long) s.getAvailableBlocks() * s.getBlockSize(); + return f.getUsableSpace(); } } diff --git a/briar-android/src/org/briarproject/system/AndroidSeedProvider.java b/briar-android/src/org/briarproject/system/AndroidSeedProvider.java index 530e4b3ca338d391e7025ccc33357f398b7844f4..521f3d75863e5e2c91452ac8f1069504a87a6528 100644 --- a/briar-android/src/org/briarproject/system/AndroidSeedProvider.java +++ b/briar-android/src/org/briarproject/system/AndroidSeedProvider.java @@ -1,25 +1,19 @@ package org.briarproject.system; +import android.os.Build; + import java.io.DataOutputStream; import java.io.IOException; -import android.annotation.SuppressLint; -import android.os.Build; - class AndroidSeedProvider extends LinuxSeedProvider { @Override - @SuppressLint("NewApi") void writeToEntropyPool(DataOutputStream out) throws IOException { out.writeInt(android.os.Process.myPid()); out.writeInt(android.os.Process.myTid()); out.writeInt(android.os.Process.myUid()); - String fingerprint = Build.FINGERPRINT; - if (fingerprint != null) out.writeUTF(fingerprint); - if (Build.VERSION.SDK_INT >= 9) { - String serial = Build.SERIAL; - if (serial != null) out.writeUTF(serial); - } + if (Build.FINGERPRINT != null) out.writeUTF(Build.FINGERPRINT); + if (Build.SERIAL != null) out.writeUTF(Build.SERIAL); super.writeToEntropyPool(out); } } diff --git a/briar-api/briar-api.iml b/briar-api/briar-api.iml index 896f2a87ac972ec0f543774067cf932722aa1d10..c1ef8459b12109a50cde94e67b8f0d874a4e41bf 100644 --- a/briar-api/briar-api.iml +++ b/briar-api/briar-api.iml @@ -28,5 +28,6 @@ <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" exported="" name="guice-3.0-no_aop" level="project" /> <orderEntry type="library" exported="" name="javax.inject" level="project" /> + <orderEntry type="library" exported="" name="briar-api.briar-api" level="project" /> </component> </module> \ No newline at end of file diff --git a/briar-core/briar-core.iml b/briar-core/briar-core.iml index d345bcd800c581d273d6fab6ddf034c1f0e3ed38..6db499bfb8be658999a675f9f5cb33a3b19ce96a 100644 --- a/briar-core/briar-core.iml +++ b/briar-core/briar-core.iml @@ -32,5 +32,6 @@ <orderEntry type="library" exported="" name="h2small-1.3.170" level="project" /> <orderEntry type="library" exported="" name="lcrypto-jdk15on-152" level="project" /> <orderEntry type="library" exported="" name="weupnp-0.1.3-SNAPSHOT-briar" level="project" /> + <orderEntry type="library" exported="" name="briar-core.briar-core" level="project" /> </component> </module> \ No newline at end of file diff --git a/briar-desktop/briar-desktop.iml b/briar-desktop/briar-desktop.iml index 16beec0b7c67e492d5ea4df0ce4f81ec28736c89..cb1b15a1dd37cc2ebc0685ef0e23e3cf2593604b 100644 --- a/briar-desktop/briar-desktop.iml +++ b/briar-desktop/briar-desktop.iml @@ -39,5 +39,6 @@ <orderEntry type="library" exported="" name="jnotify-0.94" level="project" /> <orderEntry type="library" exported="" name="bluecove-gpl-2.1.1-SNAPSHOT" level="project" /> <orderEntry type="library" exported="" name="jssc-0.9-briar" level="project" /> + <orderEntry type="library" exported="" name="briar-desktop.briar-desktop" level="project" /> </component> </module> \ No newline at end of file diff --git a/briar-tests/briar-tests.iml b/briar-tests/briar-tests.iml index 778557c56bc1098fc3537d0933d658daf6e68132..50b0b9e7081eee6105806acc202f45cb7db4d46e 100644 --- a/briar-tests/briar-tests.iml +++ b/briar-tests/briar-tests.iml @@ -43,5 +43,6 @@ <orderEntry type="library" exported="" name="jmock-2.5.1" level="project" /> <orderEntry type="library" exported="" name="hamcrest-core-1.1" level="project" /> <orderEntry type="library" exported="" name="hamcrest-library-1.1" level="project" /> + <orderEntry type="library" exported="" name="briar-tests.briar-tests" level="project" /> </component> </module> \ No newline at end of file