Skip to content

Commit 707af0b

Browse files
authored
Update proguard rules (#319)
* update proguard rules * fixed up testapp so I could test proguard build
1 parent 1c8afe9 commit 707af0b

6 files changed

Lines changed: 40 additions & 29 deletions

File tree

mapbox/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ dependencies {
4747
compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.0-SNAPSHOT@aar') {
4848
transitive=true
4949
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-java-geojson'
50+
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-telemetry'
5051
}
5152

5253
// Leak Canary

mapbox/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
android:exported="false"/>
188188

189189
<!-- Telemetry -->
190-
<service android:name="com.mapbox.mapboxsdk.telemetry.TelemetryService"/>
190+
<service android:name="com.mapbox.services.android.telemetry.service.TelemetryService"/>
191191

192192
</application>
193193

mapbox/app/src/main/java/com/mapbox/services/android/testapp/Utils.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
package com.mapbox.services.android.testapp;
22

33
import android.content.Context;
4+
import android.graphics.Bitmap;
5+
import android.graphics.Canvas;
6+
import android.graphics.drawable.Drawable;
7+
import android.support.annotation.DrawableRes;
48
import android.support.annotation.NonNull;
9+
import android.support.v4.content.res.ResourcesCompat;
510

611
import com.mapbox.mapboxsdk.Mapbox;
12+
import com.mapbox.mapboxsdk.annotations.Icon;
13+
import com.mapbox.mapboxsdk.annotations.IconFactory;
714

815
public class Utils {
916

@@ -34,4 +41,16 @@ public static String getMapboxAccessToken(@NonNull Context context) {
3441
}
3542
}
3643

37-
}
44+
/**
45+
* Demonstrates converting any Drawable to an Icon, for use as a marker icon.
46+
*/
47+
public static Icon drawableToIcon(@NonNull Context context, @DrawableRes int id) {
48+
Drawable vectorDrawable = ResourcesCompat.getDrawable(context.getResources(), id, context.getTheme());
49+
Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
50+
vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
51+
Canvas canvas = new Canvas(bitmap);
52+
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
53+
vectorDrawable.draw(canvas);
54+
return IconFactory.getInstance(context).fromBitmap(bitmap);
55+
}
56+
}

mapbox/app/src/main/java/com/mapbox/services/android/testapp/directions/RouteUtilsV5Activity.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package com.mapbox.services.android.testapp.directions;
22

33
import android.graphics.Color;
4-
import android.graphics.drawable.Drawable;
54
import android.os.Bundle;
65
import android.support.annotation.NonNull;
7-
import android.support.v4.content.ContextCompat;
86
import android.support.v7.app.AppCompatActivity;
97
import android.util.Log;
108
import android.widget.Toast;
119

1210
import com.mapbox.mapboxsdk.annotations.Icon;
13-
import com.mapbox.mapboxsdk.annotations.IconFactory;
1411
import com.mapbox.mapboxsdk.annotations.Marker;
1512
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
1613
import com.mapbox.mapboxsdk.annotations.Polyline;
@@ -65,10 +62,7 @@ protected void onCreate(Bundle savedInstanceState) {
6562
super.onCreate(savedInstanceState);
6663
setContentView(R.layout.activity_route_utils_v5);
6764

68-
// Create an Icon object for the marker to use
69-
IconFactory iconFactory = IconFactory.getInstance(this);
70-
Drawable iconDrawable = ContextCompat.getDrawable(this, R.drawable.ic_my_location_black_24dp);
71-
tapIcon = iconFactory.fromDrawable(iconDrawable);
65+
tapIcon = Utils.drawableToIcon(this, R.drawable.ic_my_location_black_24dp);
7266

7367
// Set up a standard Mapbox map
7468
mapView = (MapView) findViewById(R.id.mapview);

mapbox/app/src/main/java/com/mapbox/services/android/testapp/nav/OffRouteDetectionActivity.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44
import android.animation.TypeEvaluator;
55
import android.animation.ValueAnimator;
66
import android.graphics.Color;
7-
import android.graphics.drawable.Drawable;
87
import android.os.Bundle;
98
import android.os.Handler;
109
import android.support.annotation.NonNull;
11-
import android.support.v4.content.ContextCompat;
1210
import android.support.v7.app.AppCompatActivity;
1311
import android.util.Log;
1412
import android.view.Menu;
@@ -17,7 +15,6 @@
1715
import android.widget.Toast;
1816

1917
import com.mapbox.mapboxsdk.annotations.Icon;
20-
import com.mapbox.mapboxsdk.annotations.IconFactory;
2118
import com.mapbox.mapboxsdk.annotations.Marker;
2219
import com.mapbox.mapboxsdk.annotations.MarkerView;
2320
import com.mapbox.mapboxsdk.annotations.MarkerViewOptions;
@@ -197,9 +194,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
197194

198195
private void addCar(LatLng position) {
199196
// Using a custom car icon for marker.
200-
IconFactory iconFactory = IconFactory.getInstance(OffRouteDetectionActivity.this);
201-
Drawable iconDrawable = ContextCompat.getDrawable(OffRouteDetectionActivity.this, R.drawable.ic_car_top);
202-
Icon icon = iconFactory.fromDrawable(iconDrawable);
197+
Icon icon = Utils.drawableToIcon(this, R.drawable.ic_car_top);
203198

204199
// Add the car marker to the map.
205200
car = map.addMarker(new MarkerViewOptions()
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Retrofit 2
1+
# Retrofit 2 (https://square.github.io/retrofit/#ProGuard)
22
# Platform calls Class.forName on types which do not exist on Android to determine platform.
33
-dontnote retrofit2.Platform
44
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
@@ -10,30 +10,32 @@
1010
# Retain declared checked exceptions for use by a Proxy instance.
1111
-keepattributes Exceptions
1212

13+
# Gson (https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg)
14+
# Gson uses generic type information stored in a class file when working with fields. Proguard
15+
# removes such information by default, so configure it to keep all of it.
16+
-keepattributes Signature
17+
1318
# For using GSON @Expose annotation
1419
-keepattributes *Annotation*
20+
1521
# Gson specific classes
16-
-dontwarn sun.misc.**
22+
-keep class sun.misc.Unsafe { *; }
23+
#-keep class com.google.gson.stream.** { *; }
1724

1825
# Prevent proguard from stripping interface information from TypeAdapterFactory,
1926
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
2027
-keep class * implements com.google.gson.TypeAdapterFactory
2128
-keep class * implements com.google.gson.JsonSerializer
2229
-keep class * implements com.google.gson.JsonDeserializer
2330

24-
# MAS Data Models
25-
-keep class com.mapbox.services.mapmatching.v4.models.** { *; }
26-
-keep class com.mapbox.services.distance.v1.models.** { *; }
27-
-keep class com.mapbox.services.directions.v4.models.** { *; }
28-
-keep class com.mapbox.services.directions.v5.models.** { *; }
29-
-keep class com.mapbox.services.geocoding.v5.models.** { *; }
31+
# MAS data models that will be serialized/deserialized over Gson
32+
-keep class com.mapbox.services.api.directions.v5.models.** { *; }
33+
-keep class com.mapbox.services.api.distance.v1.models.** { *; }
34+
-keep class com.mapbox.services.api.geocoding.v5.models.** { *; }
35+
-keep class com.mapbox.services.api.mapmatching.v5.models.** { *; }
36+
-keep class com.mapbox.services.commons.geojson.** { *; }
3037

3138
-dontwarn javax.annotation.**
3239

33-
-keepclassmembers class rx.internal.util.unsafe.** {
34-
long producerIndex;
35-
long consumerIndex;
36-
}
37-
3840
-keep class com.google.**
39-
-dontwarn com.google.**
41+
-dontwarn com.google.**

0 commit comments

Comments
 (0)