diff --git a/briar-android/build.gradle b/briar-android/build.gradle
index 4ead68e29f986ba6a82f592616ace455699b2f7b..6be595b8090ef69813e1e57f170198054f19049a 100644
--- a/briar-android/build.gradle
+++ b/briar-android/build.gradle
@@ -6,14 +6,27 @@ repositories {
 }
 
 dependencies {
+
+    def supportVersion = '23.1.1'
     compile project(':briar-api')
     compile project(':briar-core')
     compile fileTree(dir: 'libs', include: '*.jar')
-    compile "com.android.support:support-v4:23.1.1"
-    compile "com.android.support:appcompat-v7:23.1.1"
-    compile "com.android.support:preference-v7:23.1.1"
-    compile "com.android.support:preference-v14:23.1.1"
-    compile "com.android.support:design:23.1.1"
+    compile "com.android.support:support-v4:$supportVersion"
+    compile("com.android.support:appcompat-v7:$supportVersion") {
+        exclude module: 'support-v4'
+    }
+    compile("com.android.support:preference-v7:$supportVersion") {
+        exclude module: 'support-v4'
+    }
+    compile("com.android.support:preference-v14:$supportVersion") {
+        exclude module: 'support-v4'
+        exclude module: 'preference-v7'
+        exclude module: 'recyclerview-v7'
+    }
+    compile("com.android.support:design:$supportVersion") {
+        exclude module: 'support-v4'
+        exclude module: 'recyclerview-v7'
+    }
     compile "org.roboguice:roboguice:2.0"
     compile "info.guardianproject.panic:panic:0.5"
     compile "info.guardianproject.trustedintents:trustedintents:0.2"
@@ -62,6 +75,19 @@ android {
         debug.setRoot('build-types/debug')
         release.setRoot('build-types/release')
     }
+
+    buildTypes {
+        debug {
+            // Set this to true to run proguard in debug
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+        release {
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+        }
+    }
+
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_6
         targetCompatibility JavaVersion.VERSION_1_6
diff --git a/briar-android/proguard-rules.txt b/briar-android/proguard-rules.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcdd8c59a67aa8a72beafbddf820ca5edf56894d
--- /dev/null
+++ b/briar-android/proguard-rules.txt
@@ -0,0 +1,56 @@
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-dontobfuscate
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+# For comfortability in case we do obfuscate
+# -renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable,*Annotation*,Signature, InnerClasses, EnclosingMethod
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class com.android.vending.licensing.ILicensingService
+-keepclasseswithmembers class * { native <methods>; }
+-keepclasseswithmembers class * {  
+    public <init> (android.content.Context, android.util.AttributeSet); 
+}
+-keepclasseswithmembers class * { 
+    public <init> (android.content.Context, android.util.AttributeSet, int); 
+}
+-keepclassmembers class * implements android.os.Parcelable { static android.os.Parcelable$Creator *; }
+-keepclassmembers class **.R$* { public static <fields>; }
+-keepclasseswithmembernames class * { native <methods>; }
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+-keepclassmembers class * extends android.app.Activity { 
+	public void *(android.view.View); 
+}
+-keepclassmembers class * { 
+	@com.google.inject.Inject <init>(...);
+	@com.google.inject.Inject <fields>; 
+}
+# Just in case Roboguice events are used
+-keepclassmembers class * {
+    void *(**On*Event);
+}
+
+-keep class org.h2.** { *; }
+-keep class org.briarproject.** { *; }
+-keep class com.google.inject.** { *; }
+-keep class javax.inject.** { *; }
+-keep class javax.annotation.** { *; }
+-keep class roboguice.** { *; }
+
+-dontwarn org.h2.**
+-dontnote org.h2.**
+-dontwarn net.sf.cglib.**
+-dontwarn org.briarproject.plugins.tcp.**
+-dontwarn roboguice.**
+-dontwarn net.sourceforge.jsocks.**
+-dontnote android.support.**
\ No newline at end of file
diff --git a/briar-android/project.properties b/briar-android/project.properties
new file mode 100644
index 0000000000000000000000000000000000000000..629dfb0da17d1cce0b5a8a1df0611abdd6711e37
--- /dev/null
+++ b/briar-android/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.txt
+
+# Project target.
+target=android-22