From 833c5ca2bee38b63e41f32e334110b62f35825d7 Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Tue, 13 Dec 2016 14:40:51 -0500 Subject: [PATCH] Fixed proguard rules (#7389) * fixed proguard rules * disabled proguard for debug testapp builds * removed dontobfuscate and fixed gson issue --- .../MapboxGLAndroidSDK/proguard-rules.pro | 48 +++++++++++++++++-- .../MapboxGLAndroidSDKTestApp/build.gradle | 2 + 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/proguard-rules.pro b/platform/android/MapboxGLAndroidSDK/proguard-rules.pro index 96f7bb95f..92ef05df6 100644 --- a/platform/android/MapboxGLAndroidSDK/proguard-rules.pro +++ b/platform/android/MapboxGLAndroidSDK/proguard-rules.pro @@ -5,6 +5,7 @@ # Square okio, ignoring warnings, # see https://github.com/square/okio/issues/60 +-dontwarn okhttp3.** -dontwarn okio.** # Gesture package @@ -38,7 +39,48 @@ # Package telemetry -keep class com.mapbox.mapboxsdk.telemetry.** { *; } -# Keep external project mapbox-java, -# Needs to be removed after https://github.com/mapbox/mapbox-java/issues/178 is resolved --keep class com.mapbox.services.** { *; } +# +# Mapbox-java Proguard rules +# We include these rules since libjava is a Jar file not AAR +# +# Retrofit 2 +# Platform calls Class.forName on types which do not exist on Android to determine platform. +-dontnote retrofit2.Platform +# Platform used when running on RoboVM on iOS. Will not be used at runtime. +-dontnote retrofit2.Platform$IOS$MainThreadExecutor +# Platform used when running on Java 8 VMs. Will not be used at runtime. +-dontwarn retrofit2.Platform$Java8 +# Retain generic type information for use by reflection by converters and adapters. +-keepattributes Signature +# Retain declared checked exceptions for use by a Proxy instance. +-keepattributes Exceptions + +# For using GSON @Expose annotation +-keepattributes *Annotation* +# Gson specific classes +-dontwarn sun.misc.** + +# Prevent proguard from stripping interface information from TypeAdapterFactory, +# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) +-keep class * implements com.google.gson.TypeAdapterFactory +-keep class * implements com.google.gson.JsonSerializer +-keep class * implements com.google.gson.JsonDeserializer + +# MAS Data Models +-keep class com.mapbox.services.commons.geojson.** { *; } +-keep class com.mapbox.services.mapmatching.v4.models.** { *; } +-keep class com.mapbox.services.distance.v1.models.** { *; } +-keep class com.mapbox.services.directions.v4.models.** { *; } +-keep class com.mapbox.services.directions.v5.models.** { *; } +-keep class com.mapbox.services.geocoding.v5.models.** { *; } + +-dontwarn javax.annotation.** + +-keepclassmembers class rx.internal.util.unsafe.** { + long producerIndex; + long consumerIndex; +} + +-keep class com.google.** { *; } +-dontwarn com.google.** \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle index 542038cbc..dbb8f5f48 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle +++ b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle @@ -43,6 +43,8 @@ android { buildTypes { debug { testCoverageEnabled = true + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled false