From 7bf39ca87786d5a594e869a318f58206f0f37475 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Sun, 18 Mar 2018 18:09:42 +0100 Subject: [PATCH 1/2] Enable minification for release build. This reduces result apk size around 2x times. Signed-off-by: Yahor Berdnikau --- ultrasonic/build.gradle | 7 +++++-- ultrasonic/minify/proguard-jackson.pro | 11 +++++++++++ ultrasonic/minify/proguard-okhttp.pro | 8 ++++++++ ultrasonic/minify/proguard-retrofit.pro | 10 ++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 ultrasonic/minify/proguard-jackson.pro create mode 100644 ultrasonic/minify/proguard-okhttp.pro create mode 100644 ultrasonic/minify/proguard-retrofit.pro diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index 1a0b385c..27ecb88d 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -19,8 +19,11 @@ android { buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), + 'minify/proguard-okhttp.pro', + 'minify/proguard-retrofit.pro', + 'minify/proguard-jackson.pro' } debug { minifyEnabled false diff --git a/ultrasonic/minify/proguard-jackson.pro b/ultrasonic/minify/proguard-jackson.pro new file mode 100644 index 00000000..e5caeef8 --- /dev/null +++ b/ultrasonic/minify/proguard-jackson.pro @@ -0,0 +1,11 @@ +#### From Jackson + +-keepattributes *Annotation*,EnclosingMethod,Signature +-keepnames class com.fasterxml.jackson.** { +*; +} +-keepnames interface com.fasterxml.jackson.** { + *; +} +-dontwarn com.fasterxml.jackson.databind.** +-keep class org.codehaus.** { *; } diff --git a/ultrasonic/minify/proguard-okhttp.pro b/ultrasonic/minify/proguard-okhttp.pro new file mode 100644 index 00000000..f0cdf30c --- /dev/null +++ b/ultrasonic/minify/proguard-okhttp.pro @@ -0,0 +1,8 @@ +#### From okhttp + +-dontwarn okhttp3.** +-dontwarn okio.** +-dontwarn javax.annotation.** +-dontwarn org.conscrypt.** +# A resource is loaded with a relative path so the package of this class must be preserved. +-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase diff --git a/ultrasonic/minify/proguard-retrofit.pro b/ultrasonic/minify/proguard-retrofit.pro new file mode 100644 index 00000000..f6dd5b8f --- /dev/null +++ b/ultrasonic/minify/proguard-retrofit.pro @@ -0,0 +1,10 @@ +#### From retrofit + +# Retain generic type information for use by reflection by converters and adapters. +-keepattributes Signature +# Retain service method parameters. +-keepclassmembernames,allowobfuscation interface * { + @retrofit2.http.* ; +} +# Ignore annotation used for build tooling. +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement From 32990acb2a3d5c9f7ea2fafc1d38d3debd5fe4ca Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Sun, 18 Mar 2018 18:13:19 +0100 Subject: [PATCH 2/2] Add assemble release step to build job. This will check that minification of release is not broken. Signed-off-by: Yahor Berdnikau --- .circleci/config.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 367a35bf..59d7bbf1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,6 +16,9 @@ jobs: - run: name: checkstyle command: ./gradlew -Pqc ktlintCheck + - run: + name: static analysis + command: ./gradlew -Pqc detektCheck - run: name: build command: ./gradlew assembleDebug @@ -29,8 +32,8 @@ jobs: name: lint command: ./gradlew lint - run: - name: static analysis - command: ./gradlew -Pqc detektCheck + name: assemble release build + command: ./gradlew assembleRelease - save_cache: paths: - ~/.gradle