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