From d340d697426c765a95fa38a4f3b3f105fe541959 Mon Sep 17 00:00:00 2001 From: Ernir Erlingsson Date: Sun, 31 Jan 2016 23:38:34 +0100 Subject: [PATCH 1/2] added proguard and cleaned dependencies --- briar-android/build.gradle | 37 +++++++++++++++++++++---- briar-android/proguard-rules.txt | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 briar-android/proguard-rules.txt diff --git a/briar-android/build.gradle b/briar-android/build.gradle index 4ead68e29..8430591c1 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -6,14 +6,29 @@ 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 fileTree(dir: 'libs', include: '*.jar') + 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 +77,18 @@ android { debug.setRoot('build-types/debug') release.setRoot('build-types/release') } + + buildTypes { + 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 000000000..2bdc21e2a --- /dev/null +++ b/briar-android/proguard-rules.txt @@ -0,0 +1,47 @@ +-optimizationpasses 5 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* +-ignorewarnings +-renamesourcefileattribute SourceFile +-keepattributes SourceFile,LineNumberTable,*Annotation*,Signature + +-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 ; } +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet); +} +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet, int); +} +-keepclassmembers class * implements android.os.Parcelable { static android.os.Parcelable$Creator *; } +-keepclassmembers class **.R$* { public static ; } +-keepclasseswithmembernames class * { native ; } +-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 (...); + @com.google.inject.Inject ; +} +# Just in case Roboguice events are used +-keepclassmembers class * { + void *(**On*Event); +} + +-keep class org.briarproject.** { *; } +-keep class com.google.inject.** { *; } +-keep class javax.inject.** { *; } +-keep class javax.annotation.** { *; } +-keep class roboguice.** { *; } \ No newline at end of file From 73c67e2e8295e697868a663971dec279c2b72e14 Mon Sep 17 00:00:00 2001 From: Ernir Erlingsson Date: Tue, 2 Feb 2016 12:19:57 +0100 Subject: [PATCH 2/2] tweaked proguard --- briar-android/build.gradle | 5 ++--- briar-android/proguard-rules.txt | 19 ++++++++++++++----- briar-android/project.properties | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 briar-android/project.properties diff --git a/briar-android/build.gradle b/briar-android/build.gradle index 8430591c1..6be595b80 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -6,12 +6,11 @@ repositories { } dependencies { - def supportVersion = '23.1.1' + def supportVersion = '23.1.1' compile project(':briar-api') compile project(':briar-core') compile fileTree(dir: 'libs', include: '*.jar') - compile fileTree(dir: 'libs', include: '*.jar') compile "com.android.support:support-v4:$supportVersion" compile("com.android.support:appcompat-v7:$supportVersion") { exclude module: 'support-v4' @@ -24,7 +23,6 @@ dependencies { exclude module: 'preference-v7' exclude module: 'recyclerview-v7' } - compile("com.android.support:design:$supportVersion") { exclude module: 'support-v4' exclude module: 'recyclerview-v7' @@ -80,6 +78,7 @@ android { buildTypes { debug { + // Set this to true to run proguard in debug minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } diff --git a/briar-android/proguard-rules.txt b/briar-android/proguard-rules.txt index 2bdc21e2a..dcdd8c59a 100644 --- a/briar-android/proguard-rules.txt +++ b/briar-android/proguard-rules.txt @@ -1,12 +1,12 @@ --optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify +-dontobfuscate -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* --ignorewarnings --renamesourcefileattribute SourceFile --keepattributes SourceFile,LineNumberTable,*Annotation*,Signature +# 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 @@ -40,8 +40,17 @@ 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.** { *; } \ No newline at end of file +-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 000000000..629dfb0da --- /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