Skip to content

Commit 5dd0074

Browse files
jushgithub-actions[bot]
authored andcommitted
Upgrade Mapbox Java Services and minor cleaning (#4658)
Things done so far: - move package name to gradle namespace - Remove unnecessary plugins - Upgrade Mapbox Java servcies to 7.4.0 - Update proguard rules for full mode - Remove multidex from test apps - Move dependencies that are only for the test apps (auto, compose, view) to the `apps.version.toml` catalog file. This way we can be more confident about what libs can be upgraded. cc @mapbox/maps-android GitOrigin-RevId: 10f7fc11655a04efcbd7007a330e4913349037c5
1 parent 33df2d2 commit 5dd0074

File tree

26 files changed

+225
-90
lines changed

26 files changed

+225
-90
lines changed

android-auto-app/build.gradle.kts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55

66
android {
77
compileSdk = libs.versions.autoCompileSdkVersion.get().toInt()
8+
namespace = "com.mapbox.maps.testapp.auto"
89
defaultConfig {
910
minSdk = libs.versions.autoMinSdkVersion.get().toInt()
1011
targetSdk = libs.versions.autoTargetSdkVersion.get().toInt()
@@ -39,16 +40,16 @@ dependencies {
3940
implementation(libs.kotlin)
4041
implementation(libs.androidx.appCompat)
4142
implementation(libs.androidx.coreKtx)
42-
implementation(libs.googleMaterialDesign)
43-
implementation(libs.androidx.constraintLayout)
44-
implementation(libs.androidx.startup)
43+
implementation(appsLibs.googleMaterialDesign)
44+
implementation(appsLibs.androidx.constraintLayout)
45+
implementation(appsLibs.androidx.startup)
4546

4647
// By default, the Maps SDK uses the Android Location Provider to obtain raw location updates.
4748
// And with Android 11, the raw location updates might suffer from precision issue.
4849
// The Maps SDK also comes pre-compiled with support for the [Google's Fused Location Provider](https://developers.google.com/location-context/fused-location-provider)
4950
// if that dependency is available. This means, that if your target devices support Google Play
5051
// Services, [we recommend adding the Google Play Location Services dependency to your project](https://developers.google.com/android/guides/setup).
51-
implementation(libs.googlePlayServicesLocation)
52+
implementation(appsLibs.googlePlayServicesLocation)
5253

5354
androidTestUtil(libs.androidx.orchestrator)
5455

android-auto-app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
package="com.mapbox.maps.testapp.auto">
3+
xmlns:tools="http://schemas.android.com/tools">
54

65
<uses-permission android:name="android.permission.INTERNET" />
76
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

app/build.gradle.kts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,16 @@ android {
5656
} else {
5757
signingConfigs.getByName("debug")
5858
}
59-
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
59+
proguardFiles(
60+
getDefaultProguardFile("proguard-android.txt"),
61+
"proguard-rules.pro",
62+
"mapbox-services-proguard-rules.pro",
63+
"retrofit2-proguard-rules.pro"
64+
)
6065
}
6166
getByName("debug") {
6267
isMinifyEnabled = false
6368
signingConfig = signingConfigs.getByName("debug")
64-
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
6569
}
6670
}
6771

@@ -95,33 +99,31 @@ android {
9599
dependencies {
96100
implementation(project(":maps-sdk"))
97101
implementation(libs.kotlin)
98-
implementation(libs.mapbox.javaTurf)
99-
implementation(libs.mapbox.javaGeoJSON)
100-
implementation(libs.mapbox.services)
101102
implementation(libs.androidx.appCompat)
102103
implementation(libs.androidx.coreKtx)
103-
implementation(libs.androidx.recyclerView)
104-
implementation(libs.androidx.constraintLayout)
105-
implementation(libs.androidx.multidex)
106-
implementation(libs.androidx.lifecycleKtx)
107-
implementation(libs.googleMaterialDesign)
108-
implementation(libs.squareRetrofit)
109-
implementation(libs.androidx.fragmentTest)
110-
implementation(libs.squareRetrofitGsonConverter)
104+
implementation(appsLibs.androidx.recyclerView)
105+
implementation(appsLibs.androidx.constraintLayout)
106+
implementation(appsLibs.androidx.lifecycleKtx)
107+
implementation(appsLibs.googleMaterialDesign)
108+
implementation(appsLibs.androidx.fragmentTest)
109+
implementation(appsLibs.mapbox.turf)
110+
implementation(appsLibs.mapbox.services)
111+
implementation(appsLibs.square.retrofit)
112+
implementation(appsLibs.square.retrofit.gsonConverter)
111113

112114
// By default, the Maps SDK uses the Android Location Provider to obtain raw location updates.
113115
// And with Android 11, the raw location updates might suffer from precision issue.
114116

115117
// The Maps SDK also comes pre-compiled with support for the [Google's Fused Location Provider](https://developers.google.com/location-context/fused-location-provider)
116118
// if that dependency is available. This means, that if your target devices support Google Play
117119
// Services, [we recommend adding the Google Play Location Services dependency to your project](https://developers.google.com/android/guides/setup).
118-
implementation(libs.googlePlayServicesLocation)
120+
implementation(appsLibs.googlePlayServicesLocation)
119121

120122
// Maps SDK does not provide this dependency so adding explicitly to make use of
121123
// async view inflation for view annotation manager example
122124
implementation(libs.asyncInflater)
123125

124-
debugImplementation(libs.squareLeakCanary)
126+
debugImplementation(appsLibs.squareLeakCanary)
125127
debugImplementation(libs.androidx.testMonitor)
126128
androidTestUtil(libs.androidx.orchestrator)
127129
androidTestImplementation(libs.bundles.base.dependenciesAndroidTests)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# AutoValue are required by com.mapbox.api.directions.v5.MapboxDirections
2+
-dontwarn com.google.auto.value.AutoValue$Builder
3+
-dontwarn com.google.auto.value.AutoValue

app/retrofit2-proguard-rules.pro

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
2+
# EnclosingMethod is required to use InnerClasses.
3+
-keepattributes Signature, InnerClasses, EnclosingMethod
4+
5+
# Retrofit does reflection on method and parameter annotations.
6+
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
7+
8+
# Keep annotation default values (e.g., retrofit2.http.Field.encoded).
9+
-keepattributes AnnotationDefault
10+
11+
# Retain service method parameters when optimizing.
12+
-keepclassmembers,allowshrinking,allowobfuscation interface * {
13+
@retrofit2.http.* <methods>;
14+
}
15+
16+
# Ignore annotation used for build tooling.
17+
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
18+
19+
# Ignore JSR 305 annotations for embedding nullability information.
20+
-dontwarn javax.annotation.**
21+
22+
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
23+
-dontwarn kotlin.Unit
24+
25+
# Top-level functions that can only be used by Kotlin.
26+
-dontwarn retrofit2.KotlinExtensions
27+
-dontwarn retrofit2.KotlinExtensions$*
28+
29+
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
30+
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
31+
-if interface * { @retrofit2.http.* <methods>; }
32+
-keep,allowobfuscation interface <1>
33+
34+
# Keep inherited services.
35+
-if interface * { @retrofit2.http.* <methods>; }
36+
-keep,allowobfuscation interface * extends <1>
37+
38+
# With R8 full mode generic signatures are stripped for classes that are not
39+
# kept. Suspend functions are wrapped in continuations where the type argument
40+
# is used.
41+
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
42+
43+
# R8 full mode strips generic signatures from return types if not kept.
44+
-if interface * { @retrofit2.http.* public *** *(...); }
45+
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
46+
47+
# With R8 full mode generic signatures are stripped for classes that are not kept.
48+
-keep,allowobfuscation,allowshrinking class retrofit2.Response

app/src/main/java/com/mapbox/maps/testapp/MapboxApplication.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.mapbox.maps.testapp
22

3+
import android.app.Application
34
import android.os.StrictMode
4-
import androidx.multidex.MultiDexApplication
55
import com.mapbox.android.core.permissions.PermissionsManager
66
import com.mapbox.annotation.MapboxExperimental
77
import com.mapbox.common.geofencing.GeofencingError
@@ -15,7 +15,7 @@ import com.mapbox.maps.testapp.examples.geofence.ExtendedGeofencingActivity
1515
/**
1616
* Application class of the test application.
1717
**/
18-
class MapboxApplication : MultiDexApplication() {
18+
class MapboxApplication : Application() {
1919

2020
@MapboxExperimental
2121
private val geofencingObserver: GeofencingObserver = object : GeofencingObserver {

app/src/main/java/com/mapbox/maps/testapp/examples/linesandpolygons/MovingIconWithTrailingLineActivity.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.lifecycle.lifecycleScope
1313
import com.mapbox.api.directions.v5.DirectionsCriteria
1414
import com.mapbox.api.directions.v5.MapboxDirections
1515
import com.mapbox.api.directions.v5.models.DirectionsResponse
16+
import com.mapbox.api.directions.v5.models.RouteOptions
1617
import com.mapbox.common.MapboxOptions
1718
import com.mapbox.core.constants.Constants.PRECISION_6
1819
import com.mapbox.geojson.Feature
@@ -137,11 +138,14 @@ class MovingIconWithTrailingLineActivity : AppCompatActivity() {
137138
}
138139

139140
private fun getRoute() {
141+
val routeOptions =
142+
RouteOptions.builder()
143+
.coordinatesList(listOf(originPoint, destinationPoint))
144+
.overview(DirectionsCriteria.OVERVIEW_FULL)
145+
.profile(DirectionsCriteria.PROFILE_WALKING)
146+
.build()
140147
directionsClient = MapboxDirections.builder()
141-
.origin(originPoint)
142-
.destination(destinationPoint)
143-
.overview(DirectionsCriteria.OVERVIEW_FULL)
144-
.profile(DirectionsCriteria.PROFILE_WALKING)
148+
.routeOptions(routeOptions)
145149
.accessToken(MapboxOptions.accessToken)
146150
.build()
147151

app/src/main/java/com/mapbox/maps/testapp/examples/linesandpolygons/SnakingDirectionsRouteActivity.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.mapbox.api.directions.v5.DirectionsCriteria.GEOMETRY_POLYLINE
1010
import com.mapbox.api.directions.v5.MapboxDirections
1111
import com.mapbox.api.directions.v5.models.DirectionsResponse
1212
import com.mapbox.api.directions.v5.models.LegStep
13+
import com.mapbox.api.directions.v5.models.RouteOptions
1314
import com.mapbox.common.MapboxOptions
1415
import com.mapbox.core.constants.Constants.PRECISION_5
1516
import com.mapbox.geojson.Feature
@@ -93,14 +94,17 @@ class SnakingDirectionsRouteActivity : AppCompatActivity() {
9394
* Build and execute the Mapbox Directions API request
9495
*/
9596
private fun requestDirectionRoute() {
97+
val routeOptions =
98+
RouteOptions.builder()
99+
.coordinatesList(listOf(PARIS_ORIGIN_POINT, TULLINS_DESTINATION_POINT))
100+
.overview(DirectionsCriteria.OVERVIEW_FULL)
101+
.profile(DirectionsCriteria.PROFILE_DRIVING)
102+
.geometries(GEOMETRY_POLYLINE)
103+
.alternatives(true)
104+
.steps(true)
105+
.build()
96106
mapboxDirectionsClient = MapboxDirections.builder()
97-
.origin(PARIS_ORIGIN_POINT)
98-
.destination(TULLINS_DESTINATION_POINT)
99-
.overview(DirectionsCriteria.OVERVIEW_FULL)
100-
.profile(DirectionsCriteria.PROFILE_DRIVING)
101-
.geometries(GEOMETRY_POLYLINE)
102-
.alternatives(true)
103-
.steps(true)
107+
.routeOptions(routeOptions)
104108
.accessToken(MapboxOptions.accessToken)
105109
.build()
106110

app/src/main/java/com/mapbox/maps/testapp/examples/terrain3D/SantaCatalinaActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
88
import com.mapbox.api.directions.v5.DirectionsCriteria
99
import com.mapbox.api.directions.v5.MapboxDirections
1010
import com.mapbox.api.directions.v5.models.DirectionsResponse
11+
import com.mapbox.api.directions.v5.models.RouteOptions
1112
import com.mapbox.common.MapboxOptions
1213
import com.mapbox.core.constants.Constants.PRECISION_6
1314
import com.mapbox.geojson.LineString
@@ -111,12 +112,14 @@ class SantaCatalinaActivity : AppCompatActivity() {
111112
* propagates the linestring geometry as high order function.
112113
*/
113114
private fun executeDirectionsRequestForRoute(animateRoute: (LineString) -> Unit) {
114-
val client = MapboxDirections.builder()
115-
.origin(POINT_START)
116-
.destination(POINT_END)
115+
val routeOptions = RouteOptions.builder()
116+
.coordinatesList(listOf(POINT_START, POINT_END))
117117
.overview(DirectionsCriteria.OVERVIEW_SIMPLIFIED)
118118
.profile(DirectionsCriteria.PROFILE_WALKING)
119119
.steps(true)
120+
.build()
121+
val client = MapboxDirections.builder()
122+
.routeOptions(routeOptions)
120123
.accessToken(MapboxOptions.accessToken)
121124
.build()
122125
client.enqueueCall(object : Callback<DirectionsResponse> {

compose-app/build.gradle.kts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66

77
android {
88
compileSdk = libs.versions.androidCompileSdkVersion.get().toInt()
9+
namespace = "com.mapbox.maps.compose.testapp"
910
defaultConfig {
1011
minSdk = libs.versions.androidMinSdkVersion.get().toInt()
1112
targetSdk = libs.versions.androidTargetSdkVersion.get().toInt()
@@ -25,12 +26,16 @@ android {
2526
isMinifyEnabled = true
2627
// For local testing only, should use a different keystore if used besides testing.
2728
signingConfig = signingConfigs.getByName("debug")
28-
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
29+
proguardFiles(
30+
getDefaultProguardFile("proguard-android.txt"),
31+
"proguard-rules.pro",
32+
"mapbox-services-proguard-rules.pro",
33+
"retrofit2-proguard-rules.pro"
34+
)
2935
}
3036
getByName("debug") {
3137
isMinifyEnabled = false
3238
signingConfig = signingConfigs.getByName("debug")
33-
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
3439
}
3540
}
3641

@@ -64,25 +69,23 @@ dependencies {
6469
implementation(platform(libs.compose.bom))
6570
implementation(libs.compose.ui)
6671
implementation(libs.compose.material)
67-
implementation(libs.androidx.activityCompose)
68-
implementation(libs.googleMaterialDesign)
69-
implementation(libs.compose.uiToolingPreview)
70-
implementation(libs.compose.uiTooling)
71-
implementation(libs.mapbox.javaTurf)
72-
implementation(libs.mapbox.services)
72+
implementation(appsLibs.androidx.activityCompose)
73+
implementation(appsLibs.compose.uiToolingPreview)
74+
implementation(appsLibs.compose.uiTooling)
75+
implementation(appsLibs.googleMaterialDesign)
76+
implementation(appsLibs.mapbox.turf)
77+
implementation(appsLibs.mapbox.services)
7378

74-
implementation(libs.squareRetrofit)
7579
implementation(libs.androidx.appCompat)
7680
implementation(libs.androidx.coreKtx)
77-
implementation(libs.androidx.multidex)
78-
implementation(libs.googlePlayServicesLocation)
81+
implementation(appsLibs.googlePlayServicesLocation)
7982
androidTestUtil(libs.androidx.orchestrator)
8083
androidTestImplementation(libs.bundles.base.dependenciesAndroidTests)
8184
androidTestImplementation(libs.androidx.testJUnit)
8285
androidTestImplementation(libs.androidx.uiAutomator)
8386
testImplementation(libs.junit)
8487
detektPlugins(libs.detektFormatting)
85-
debugImplementation(libs.squareLeakCanary)
88+
debugImplementation(appsLibs.squareLeakCanary)
8689
}
8790

8891
project.apply {

0 commit comments

Comments
 (0)