Skip to content

Commit 63e9c98

Browse files
authored
v3.5.0-rc.1 (#7886)
ce489449a82df6bb8326489eaa6f8b1a6a9fee56
1 parent 7b56d2c commit 63e9c98

File tree

13 files changed

+134
-47
lines changed

13 files changed

+134
-47
lines changed

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# Changelog for the Mapbox Navigation SDK Core Framework for Android
22

3+
## Navigation SDK Core Framework 3.5.0-rc.1 - 26 October, 2024
4+
#### Features
5+
6+
7+
#### Bug fixes and improvements
8+
- Improved reroute and alternative routes behavior [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
9+
- Fixed map matching bug after leaving a tunnel [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
10+
- Increased route stickiness in dead reckoning mode [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
11+
- Added ability to send raw unfused GNSS location in addition to fused one [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
12+
- Improved odometry and road graph fusing in urban canyons [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
13+
- Signature of experimental `RawGnssSatelliteData` has been changed, now it requires `residual` as a constructor parameter [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
14+
- Experimental `RawGnssLocation` type has been removed, now `RawGnssData` requires `DilutionOfPrecision` as a parameter [#7114](https://github.com/mapbox/mapbox-navigation-android/pull/7114)
15+
16+
#### Known issues :warning:
17+
18+
19+
#### Other changes
20+
21+
22+
### Mapbox dependencies
23+
This release depends on, and has been tested with, the following Mapbox dependencies:
24+
- Mapbox Maps SDK `v11.8.0-rc.1` ([release notes](https://github.com/mapbox/mapbox-maps-android/releases/tag/v11.8.0-rc.1))
25+
- Mapbox Navigation Native `v321.0.0-rc.1`
26+
- Mapbox Core Common `v24.8.0-rc.1`
27+
- Mapbox Java `v7.3.1` ([release notes](https://github.com/mapbox/mapbox-java/releases/tag/v7.3.1))
28+
29+
330
## Navigation SDK Core Framework 3.5.0-beta.1 - 17 October, 2024
431
#### Features
532
- Added support for SVG junction views, see `MapboxJunctionApi#generateJunction(instructions: BannerInstructions, @JunctionViewFormat format: String, consumer: MapboxNavigationConsumer<Expected<JunctionError, JunctionViewData>>)`. [#6803](https://github.com/mapbox/mapbox-navigation-android/pull/6803)

CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @mapbox/navigation-android

gradle/dependencies.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ ext {
1313
// version which we should use in this build
1414
def mapboxNavigatorVersion = System.getenv("FORCE_MAPBOX_NAVIGATION_NATIVE_VERSION")
1515
if (mapboxNavigatorVersion == null || mapboxNavigatorVersion == '') {
16-
mapboxNavigatorVersion = '321.0.0-beta.1'
16+
mapboxNavigatorVersion = '321.0.0-rc.1'
1717
}
1818
println("Navigation Native version: " + mapboxNavigatorVersion)
1919

2020
version = [
21-
mapboxMapSdk : '11.8.0-beta.1',
21+
mapboxMapSdk : '11.8.0-rc.1',
2222
mapboxSdkServices : '7.3.1',
2323
mapboxNavigator : "${mapboxNavigatorVersion}",
24-
mapboxCommonNative : '24.8.0-beta.1',
25-
mapboxSearch : '2.6.0-beta.1',
24+
mapboxCommonNative : '24.8.0-rc.1',
25+
mapboxSearch : '2.6.0-rc.1',
2626
mapboxBaseAndroid : '0.11.0',
2727
androidXLifecycle : '2.4.0',
2828
androidXCoreVersion : '1.6.0',

gradle/publish.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ registry {
5656
sdkName = project.ext.navSdkArtifactSettings[project.name].getV2()
5757
production = true
5858
snapshot = project.ext.snapshot
59-
// TODO revert override = snapshot
60-
override = true
59+
override = snapshot
6160
dryRun = false
6261
publish = true
6362
publishMessage = "cc @mapbox/navigation-android"

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/CoreMapMatchingTests.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,8 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
313313
val result = navigation.requestMapMatching(options).getSuccessfulOrThrowException()
314314
navigation.setNavigationRoutes(result.navigationRoutes)
315315
stayOnPosition(
316-
latitude = 32.712012,
317-
longitude = -117.172928,
316+
latitude = 32.712702672167055,
317+
longitude = -117.17290808578423,
318318
bearing = 178.0f,
319319
frequencyHz = 5,
320320
) {
@@ -354,8 +354,8 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
354354

355355
navigation.setNavigationRoutes(listOf(deserializedRoute))
356356
stayOnPosition(
357-
latitude = 32.712012,
358-
longitude = -117.172928,
357+
latitude = 32.712702672167055,
358+
longitude = -117.17290808578423,
359359
bearing = 178.0f,
360360
frequencyHz = 5,
361361
) {

libnavigation-copilot/src/main/java/com/mapbox/navigation/copilot/HistoryAttachmentsUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ internal object HistoryAttachmentsUtils {
3737
.replace('_', '/'),
3838
).getString("u")
3939

40-
fun generateSessionId(copilotSession: CopilotSession, owner: String): String =
41-
"$COPILOT/$owner/${retrieveSpecVersion()}/" +
40+
fun generateSessionId(copilotSession: CopilotSession): String =
41+
"$COPILOT/${copilotSession.owner}/${retrieveSpecVersion()}/" +
4242
"${copilotSession.appMode}/-/-" +
4343
"/${copilotSession.driveMode}/-" +
4444
"/${copilotSession.driveId}"

libnavigation-copilot/src/main/java/com/mapbox/navigation/copilot/internal/CopilotSession.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ package com.mapbox.navigation.copilot.internal
33
import android.content.Context
44
import android.content.pm.ApplicationInfo
55
import com.google.gson.Gson
6+
import com.mapbox.common.MapboxServices
67
import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
8+
import com.mapbox.navigation.base.internal.options.getOwner
9+
import com.mapbox.navigation.base.internal.utils.MapboxOptionsUtil.getTokenForService
710
import com.mapbox.navigation.base.options.EventsAppMetadata
811
import com.mapbox.navigation.base.options.NavigationOptions
912
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.retrieveNavNativeSdkVersion
1013
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.retrieveNavSdkVersion
14+
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.retrieveOwnerFrom
1115
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.utcTimeNow
1216
import java.io.File
1317
import java.util.Locale
@@ -41,6 +45,7 @@ data class CopilotSession(
4145
val appUserId: String = "_",
4246
val appSessionId: String = "_",
4347
val recording: String = "",
48+
val owner: String = "",
4449
) {
4550
fun toJson(): String = Gson().toJson(this)
4651

@@ -69,6 +74,8 @@ data class CopilotSession(
6974
appUserId = copilotOptions.userId ?: eventsAppMetadata?.userId ?: "_",
7075
appSessionId = eventsAppMetadata?.sessionId ?: "_",
7176
recording = recording,
77+
owner = copilotOptions.getOwner()?.takeUnless { it.isBlank() }
78+
?: retrieveOwnerFrom(getTokenForService(MapboxServices.DIRECTIONS)),
7279
)
7380
}
7481
}

libnavigation-copilot/src/main/java/com/mapbox/navigation/copilot/work/HistoryUploadWorker.kt

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,14 @@ import androidx.work.OneTimeWorkRequestBuilder
1212
import androidx.work.WorkManager
1313
import androidx.work.WorkerParameters
1414
import com.mapbox.common.MapboxOptions
15-
import com.mapbox.common.MapboxServices
1615
import com.mapbox.common.TransferState
1716
import com.mapbox.common.UploadOptions
1817
import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
19-
import com.mapbox.navigation.base.internal.utils.MapboxOptionsUtil.getTokenForService
2018
import com.mapbox.navigation.copilot.AttachmentMetadata
2119
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils
2220
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.attachmentFilename
2321
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.generateSessionId
2422
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.rename
25-
import com.mapbox.navigation.copilot.HistoryAttachmentsUtils.retrieveOwnerFrom
2623
import com.mapbox.navigation.copilot.HttpServiceProvider
2724
import com.mapbox.navigation.copilot.MapboxCopilot
2825
import com.mapbox.navigation.copilot.MapboxCopilot.pushStatusObservers
@@ -106,8 +103,6 @@ internal class HistoryUploadWorker(
106103
HistoryAttachmentsUtils.delete(file)
107104
}
108105

109-
@Suppress("MaxLineLength")
110-
/* ktlint-disable max-line-length */
111106
private suspend fun uploadHistoryFile(
112107
uploadOptions: UploadOptions,
113108
): Boolean = suspendCancellableCoroutine { cont ->
@@ -120,7 +115,8 @@ internal class HistoryUploadWorker(
120115

121116
TransferState.IN_PROGRESS -> {
122117
logD(
123-
"uploadStatus state = UPLOADING sent ${uploadStatus.totalSentBytes}/${uploadStatus.totalBytes} bytes",
118+
"uploadStatus state = UPLOADING sent ${uploadStatus.totalSentBytes}" +
119+
"/${uploadStatus.totalBytes} bytes",
124120
)
125121
}
126122

@@ -132,7 +128,8 @@ internal class HistoryUploadWorker(
132128

133129
TransferState.FAILED -> {
134130
logD(
135-
"uploadStatus state = FAILED error = ${uploadStatus.error}; HttpResponseData = ${uploadStatus.httpResult?.value}",
131+
"uploadStatus state = FAILED error = ${uploadStatus.error}; " +
132+
"HttpResponseData = ${uploadStatus.httpResult?.value}",
136133
)
137134
cont.resume(false)
138135
}
@@ -144,7 +141,6 @@ internal class HistoryUploadWorker(
144141
}
145142
}
146143
}
147-
/* ktlint-enable max-line-length */
148144

149145
private fun failure(copilotSession: CopilotSession) {
150146
val failedStatus = PushStatus.Failed(copilotSession)
@@ -166,19 +162,20 @@ internal class HistoryUploadWorker(
166162

167163
internal companion object {
168164

169-
private const val HISTORY_FILE_PATH: String = "history_file_path"
170-
private const val APP_MODE: String = "app_mode"
171-
private const val DRIVE_MODE: String = "drive_mode"
172-
private const val DRIVE_ID: String = "drive_id"
173-
private const val STARTED_AT: String = "started_at"
174-
private const val ENDED_AT: String = "ended_at"
175-
private const val NAV_SDK_VERSION: String = "nav_sdk_version"
176-
private const val NAV_NATIVE_SDK_VERSION: String = "nav_native_sdk_version"
177-
private const val APP_VERSION: String = "app_version"
178-
private const val APP_USER_ID: String = "app_user_id"
179-
private const val APP_SESSION_ID: String = "app_session_id"
180-
private const val UPLOAD_URL: String = "upload_url"
181-
private const val UPLOAD_SESSION_ID: String = "upload_session_id"
165+
private const val HISTORY_FILE_PATH = "history_file_path"
166+
private const val APP_MODE = "app_mode"
167+
private const val DRIVE_MODE = "drive_mode"
168+
private const val DRIVE_ID = "drive_id"
169+
private const val STARTED_AT = "started_at"
170+
private const val ENDED_AT = "ended_at"
171+
private const val NAV_SDK_VERSION = "nav_sdk_version"
172+
private const val NAV_NATIVE_SDK_VERSION = "nav_native_sdk_version"
173+
private const val APP_VERSION = "app_version"
174+
private const val APP_USER_ID = "app_user_id"
175+
private const val APP_SESSION_ID = "app_session_id"
176+
private const val UPLOAD_URL = "upload_url"
177+
private const val UPLOAD_SESSION_ID = "upload_session_id"
178+
private const val OWNER = "owner"
182179

183180
// 2^8 x 338 = 86528 / 3600 = 24.03 hours
184181
private const val MAX_RUN_ATTEMPT_COUNT = 8
@@ -208,8 +205,7 @@ internal class HistoryUploadWorker(
208205

209206
private fun inputData(copilotSession: CopilotSession): Data {
210207
val url = "$PROD_BASE_URL/attachments/v1?access_token=${MapboxOptions.accessToken}"
211-
val owner = retrieveOwnerFrom(getTokenForService(MapboxServices.DIRECTIONS))
212-
val uploadSessionId = generateSessionId(copilotSession, owner)
208+
val uploadSessionId = generateSessionId(copilotSession)
213209

214210
return Data.Builder()
215211
.putCopilotSession(copilotSession)
@@ -230,6 +226,7 @@ internal class HistoryUploadWorker(
230226
appUserId = data.getString(APP_USER_ID)!!,
231227
appSessionId = data.getString(APP_SESSION_ID)!!,
232228
recording = data.getString(HISTORY_FILE_PATH)!!,
229+
owner = data.getString(OWNER).orEmpty(),
233230
)
234231

235232
@VisibleForTesting
@@ -245,5 +242,6 @@ internal class HistoryUploadWorker(
245242
.putString(APP_VERSION, copilotSession.appVersion)
246243
.putString(APP_SESSION_ID, copilotSession.appSessionId)
247244
.putString(HISTORY_FILE_PATH, copilotSession.recording)
245+
.putString(OWNER, copilotSession.owner)
248246
}
249247
}

libnavigation-copilot/src/test/java/com/mapbox/navigation/copilot/HistoryAttachmentsUtilsTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ class HistoryAttachmentsUtilsTest {
5353
appVersion = "v0.108.0-9-g0527ee4",
5454
appUserId = "wBzYwfK0oCYMTNYPIFHhYuYOLLs1",
5555
appSessionId = "3e48fd7b-ac82-42a8-9abe-aaeb724f92ce",
56+
owner = "owner",
5657
)
5758

58-
val sessionId = HistoryAttachmentsUtils.generateSessionId(navigationSession, "owner")
59+
val sessionId = HistoryAttachmentsUtils.generateSessionId(navigationSession)
5960

6061
val expectedSessionId = "co-pilot/owner/1.2/mbx-debug/-/-/free-drive/" +
6162
"-/3e48fd7a-fc82-42a8-9bae-baeb724f92ce"

libnavigation-copilot/src/test/java/com/mapbox/navigation/copilot/MapboxCopilotImplTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class MapboxCopilotImplTest {
104104

105105
mockkObject(HistoryAttachmentsUtils)
106106
every { HistoryAttachmentsUtils.delete(any()) } returns false
107+
every { HistoryAttachmentsUtils.retrieveOwnerFrom(fakeAccessToken) } returns "owner"
107108

108109
val tmpFolder = folder.newFolder("copilot-test")
109110
mockedContext = mockk<Application>(relaxed = true) {

0 commit comments

Comments
 (0)