Navigation SDK for Android release notes

Subscribe to these release notes. Subscribe

This page is updated with each new release of the Navigation SDK for Android. The changelog lists releases by date and includes any new features, bug fixes and significant performance improvements. You can also browse and filter all release notes for all products in the Google API Console.

December 02, 2024

5.99.1

Updated the setCustomControl method to add support for a footer position. This fixes the issue of positioning custom control in relation to the ETA card.

For more information, see CustomControlPosition.FOOTER.

Updated the default camera bounds in landscape mode. Camera bounds are now centered in the end half (right half in left-to-right layouts) of the screen to provide more space around the chevron.

Fixed a race condition that was causing native crashes in certain situations for apps that use the Navigation SDK.

Updated the position of the compass in landscape mode. The compass now aligns with the top of the map, instead of the bottom of the header, in order to better accommodate the half-width header.

Fixed an issue that would cause apps that implement the Navigation SDK to crash and throw a NoClassDefFound error due to a Justification problem.

Fixed an issue that resulted in ANR errors while switching from Navigation to Map UI.

Fixed an issue that resulted in an ANR error while inflating the SupportMapFragment.

Improved concurrency management within the SDK to address potential ANR errors caused by accessing artifacts from different threads.

November 11, 2024

5.2.5

Fixed an issue that would throw a SecurityException and cause the app to crash on devices running Android 14. This issue would occur if the app attempted to start a foreground service for guidance notifications without obtaining the users permission for background location access. For more information, see Background location usage.

November 06, 2024

5.5.2

Updated the setCustomControl method to add support for a footer position. This fixes the issue of positioning custom control in relation to the ETA card.

For more information, see Map UI Controls.

Updated the default camera bounds for landscape mode. Camera bounds are now centered in the end half (right half in left-to-right layouts) of the screen to provide more space around the chevron.

October 18, 2024

5.5.1

Updated the position of custom control elements in landscape mode. Custom control elements in the BOTTOM_END_BELOW position now align with the bottom of the map, instead of the top of the footer, to better accommodate the half-width footer.

Updated the position of the compass in landscape mode. The compass now aligns with the top of the map, instead of the bottom of the header, in order to better accommodate the half-width header.

Fixed a race condition that was causing native crashes in certain situations for apps that use the Navigation SDK.

September 13, 2024

6.0.0

Removed all of the ExternalCache methods and classes, which were deprecated in v5.0.

These include the following methods from GoogleMap model class, the following methods were removed:

  • GoogleMap#setExternalCache
  • GoogleMap#setNetworkEnabled
  • GoogleMap#isNetworkEnabled

The following model classes were removed:

  • ExternalCache
  • ResourceDescriptor
  • TileDescriptor

Removed the GoogleMap.addMarker(AdvancedMarkerOptions) method. This method was previously exposed because the Navigation SDK includes the Maps SDK API. However, the method was only included in the preview channel of the Maps SDK and was not used by the Navigation SDK.

Starting with version 6.0.0 of the Navigation SDK for Andorid, apps must upgrade to Kotlin 2.0. For more information, see Migrate to Kotlin 2.0.

The targetSdk is now API level 34. This will be a requirement for all apps that deploy to Google Play Store as of August 2024. See Meet Google Play's target API level requirement.

Deprecated the navigator.fetchRouteInfo() method, which was previously only available to Mobility Services customers. Use the computeCustomRoutes() method from the Routes Preferred API instead.

Support for providing the Navigator with the same destination (waypoint) more than once consecutively has been deprecated. Note: The SDK does not currently throw an error in these cases.

The use of MAP_TYPE_TERRAIN during navigation is deprecated.

In accordance with the Mobile OS version support policy, we are freezing support for Android 6 and 7 (API Level 23, 24, and 25) in upcoming major versions of Navigation SDK for Android.

Versions of Navigation SDK for Android released beginning the third quarter of 2025 will support a minimum of Android 8 (API Level 26). Earlier SDK versions will continue supporting Android 6 and 7.

If your dependencies do not specify a version number, your IDE will load the newest SDK version and new builds of your app will not support Android 6 and 7.

Specify a version of the Navigation SDK for Android in your application's build dependencies in order to control when you raise the minimum supported OS for new versions of your app.

In the next major version of Navigation SDK, traffic lights and stop signs in DisplayOptions will be shown by default.

An issue related to the use of earlier versions of desugaring libraries may cause some apps that implement the Navigation SDK to crash with the following NoSuchMethod error at runtime:
No virtual method toSeconds()J in class Ljava/time/Duration; or its super classes (declaration of 'java.time.Duration' appears in ...)
If you experience this issue, update your app to use com.android.tools:desugar_jdk_libs_nio:2.0.3 for desugaring. You may also need to upgrade to Gradle 8.4 and the Android Gradle plugin version 8.3.0. For more information, see Set up your Android Studio project or the Navigation SDK sample app on GitHub.

Removed default jetification from the Navigation. If your app relies on non-AndroidX libraries, set android.useAndroidX=true and android.enableJetifier=true in your project-level gradle.properties file. For more information, see the Navigation SDK sample app on GitHub.

Updated the handling of quotas for destination requests to ensure quota tracking persists when an app is restarted.

Updated the default colors for maps to match the new colors that are already available in the Google Maps app. For more information, see New map style for Google Maps Platform.

Fixed issues that could affect GPS accuracy and cause GPS error messages to appear during navigation.

5.99.0

Updated the handling of quotas for destination requests to ensure quota tracking persists when an app is restarted.

An issue related to AndroidX migration may cause some apps that implement the Navigation SDK to crash with the following NoClassDefFoundError error:

Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/...
Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/...

If you experience this issue, please use the following configuration in the project root gradle.properties file.

android.useAndroidX=true
android.enableJetifier=true

For more information, see the Navigation SDK sample app on GitHub.

August 08, 2024

5.4.1

Fixed a bug that prevented the Navigation SDK from executing native Java methods when the application was built on certain JDK versions.

Fixed an issue that caused an "application not responding" error when using R8 full mode.

August 06, 2024

5.5.0

Updated the Terms and Conditions dialogue to show new text that covers new features being added to the product.

Added the ability for developers to set the map color scheme to dark, light, or to use the system settings. For more information and examples, see Configure a map.

Updated the behavior of headers for the turn and ETA navigation cards that appear during turn-by-turn guidance. The headers now extend to only half of the screen width in landscape orientation in order to make more of the map visible.

Fixed an issue that caused an "application not responding" error when using R8 full mode.

An issue related to the use of earlier versions of desugaring libraries may cause some apps that implement the Navigation SDK to crash with the following NoSuchMethod error at runtime:
No virtual method toSeconds()J in class Ljava/time/Duration; or its super classes (declaration of 'java.time.Duration' appears in ...)
If you experience this issue, update your app to use com.android.tools:desugar_jdk_libs_nio:2.0.3 for desugaring. You may also need to upgrade to Gradle 8.4 and the Android Gradle plugin version 8.3.0. For more information, see Set up your Android Studio project or the Navigation SDK sample app on GitHub.

June 18, 2024

5.4.0

Made improvements to rendering performance during guidance.

Added additional triggers for RouteChangedListener after a route is generated, after the driver selects an alternative route (before starting navigation), and after a route is cleared.

Fixed an issue that would throw TransactionException errors stating a project was not allowed to use the setTransactionIds() API.

Fixed an issue that would throw a NullPointerException when calling NavigationTransactionRecorder.getTransactionRecorder() if Project Properties were not yet available.

Fixed an issue that would throw a TransactionException when calling Navigator.setTransactionIds() if Project Properties were not yet available.

May 30, 2024

5.3.2

Fixed an issue that would throw a SecurityException and cause the app to crash on devices running Android 14. This issue would occur if the app attempted to start a foreground service for guidance notifications without obtaining the users permission for background location access. For more information, see Background location usage.

Fixed an issue that caused a NullPointerException when using R8 full mode.

May 03, 2024

4.3.0

Traffic lights and stop sign icons along the route are now supported in JP, GB, and DE, in addition to BE, CA, ES, FR, IT, NL, SE, US. This change is available in SDK versions 4.3.0 and higher. For more information, see Traffic lights or stop sign icons.

April 30, 2024

5.3.1

Fixed an issue where users of the Android Gradle Plugin < 7.3.0 would experience bugs associated with JDK-8272564, such as NPE, java.lang.ExceptionInInitializerError, and java.lang.IncompatibleClassChangeError.

Fixed an issue where apps using targetSDK 34 would throw a SecurityException. For more information about declaring new permission to use foreground service types in Android, see https://developer.android.com/about/versions/14/changes/fgs-types-required#permission-for-fgs-type .

April 26, 2024

5.2.4

Fixed an issue where users of Android Gradle Plugin < 7.3.0 would experience bugs associated with JDK-8272564, such as NPE, java.lang.ExceptionInInitializerError, and java.lang.IncompatibleClassChangeError.

Fixed a bug that caused NullPointerException errors to be thrown arbitrarily within apps using the Navigation SDK.

Fixed an issue where apps using targetSDK 34 would throw a SecurityException. For more information about declaring new permission to use foreground service types in Android, see https://developer.android.com/about/versions/14/changes/fgs-types-required#permission-for-fgs-type.

April 04, 2024

5.3.0

Reduced initialization latency of the Navigation SDK.

The terms and conditions dialog no longer has a decline button. Drivers must acknowledge the terms and conditions from the dialog in order to continue using navigation.

Fixed a bug that caused NullPointerException errors to be thrown arbitrarily within apps using the Navigation SDK.

Fixed a demo app memory leak by using attach/detach in place of replace for swapping fragments.

Added an example of how to work around an Android 12 PermissionUsageHelper leak in the demo app.

Fixed memory leaks that occurred after guidance has started.

March 19, 2024

5.2.3

The Navigation SDK for Android version 5.2.3 is now available. For information about this release and for all previous releases, subscribe to the Release Notes XML feed.

Fixed an issue that caused flickering of the selected route when starting and stopping navigation.

Reduced latency when switching from navigation to overview mode.

Fixed an IllegalArgumentException crash caused by marker updates while sorting the markers.

Fixed an issue where NavigationView#onCreate would recreate expensive components and potentially trigger an out-of-memory error.

Fixed an issue where the GoogleMap class could potentially leak NavigationView.

Fixed an issue that caused flickering of the route in the MapView while following the users location.

Fixed an issue where overview mode would not zoom in close enough to the route when the destination and origin were in close proximity to each other. This issue would only occur after navigation had started.

February 22, 2024

5.2.2

The Navigation SDK for Android version 5.2.2 is now available. For information about this release and for all previous releases, subscribe to the Release Notes XML feed.

Previously, the re-center button did not respond to interaction after the user reached the destination. Now the re-center button responds to input after arrival.

February 06, 2024

5.2.1

Release 5.2.1

The Navigation SDK for Android version 5.2.1 is now available. See also the retroactive release note update to the Navigation SDK version 5.2.0.

Updated the dependency on org.chromium.net:cronet-fallback to 119.6045.31 in order to resolve the NoSuchMethodError crash.

January 22, 2024

5.2.0

Fixed an issue that causes map freezing and recenter button to disappear in some situations.

Fixed some issues that resulted in ANR errors when SupportMapFragment is destroyed.

Fixed a few potential sources of memory leaks.

Fixed a potential java.lang.IncompatibleClassChangeError that can occur in some cases.

The Navigation SDK for Android 5.2.0 was released on January 22, 2024. This is a retroactive release note update.

Apps that depend on any of the following libraries can experience a NoSuchMethodError crash at runtime:

  • com.google.android.gms:play-services-cronet
  • com.github.bumptech.glide:cronet-integration
  • Driver SDK

To resolve the crash, upgrade to the Navigation SDK 5.2.1. Alternatively, add the following dependency to the module-level build.gradle:

dependencies {
  ...
  implementation 'org.chromium.net:cronet-fallback:119.6045.31'
  ...
}

January 10, 2024

5.1.2

Fixed IllegalStateException in MediaRouter. This exception happened after getting a MediaRouter instance after stopping navigation.

November 16, 2023

5.1.1

Fixed IllegalStateException in MediaRouter caused by getting an instance of MediaRouter from a non-main thread.

November 02, 2023

5.1.0

Versions of Navigation SDK for Android released beginning the fourth quarter of 2023 now require a minimum of 1.9.0 for Kotlin dependency. Earlier SDK versions continue to support Kotlin 1.6.0 and higher.

To control when you raise the Kotlin dependency version for new app versions, specify a Kotlin version of the Navigation SDK for Android in your application's build dependencies.

If you are bumping from Kotlin version 1.6/1.7 to 1.9:

  1. Follow the migration guide if your app uses Kotlin synthetics

  2. Ensure the Gradle/Android Gradle plugin versions are in the range defined by Kotlin Gradle plugin version 1.9.0

Advanced marker method deprecated.

AdvancedMarker addMarker(AdvancedMarkerOptions)

Apps that use Proguard or Dexguard must migrate to R8. See https://developer.android.com/build/shrink-code for more information.

You can now disable guidance notifications and shut down the app and background services when the user dismisses/swipes away the app from Android's recent tasks.

Usage of the Android Foreground Service APIs have been updated internally to address known crashes with the NavigationService caused by Android foreground service restrictions.

Added logic to handle android android.app.ForegroundServiceStartNotAllowedException crash that happened due to the foreground service restrictions on Android S.

Implemented an improvement around the location listeners to reduce the amount of stale location updates generated.

Fixed an app crash on Android versions 13 and 14 after the end user taps the navigation button and accepts the terms of service.

Fixed a crash related to camera animation when the zoom value was not calculated properly.

October 20, 2023

4.99.2

Fixed getting stale location with updated time stamp.

September 22, 2023

5.0.0

Due to downstream dependencies affected by a Kotlin version upgrade, the adoption of future version v5.1.0 will require some migration effort if your project uses Kotlin.

We recommend you upgrade to Kotlin v1.9.0+ as soon as possible to minimize friction of adopting future features or bug fixes in the Navigation SDK for Android. If you build your application using Kotlin, update to Kotlin version 1.9.0 in your project-level build.gradle file (both Kotlin stdlib and Kotlin Gradle Plugin).

Review our resources for upgrading Kotlin language versions:

  1. If you are migrating from Kotlin 1.6 or 1.7, follow the migration guide if your app uses Kotlin synthetics
  2. Use the compatibility guide for Kotlin 1.9 to understand differences between 1.8 and 1.9
  3. Ensure the Gradle/Android Gradle plugin versions are in the range defined by Kotlin Gradle plugin version 1.9.0

September 21, 2023

4.99.1 & 5.0.1

Releases 4.99.1 and 5.0.1

The Navigation SDK for Android release for versions 4.99.1 and 5.0.1 is now available. For information about this release, and for all previous releases, see the Release notes or subscribe to the release notes XML feed.

If you are a new user, see Set up your project to get started.

Fixed ANR triggered during android.app.ActivityThread.acquireProvider.

Fixed an edge case nullPointerException when onConfiguration is triggered in NavigationView.

Fixed an issue of out-of-memory crashes when renderer is paused, but labeling continues. Labeling now pauses when renderer is paused.

Fixed an issue where the traveled portion of the route polyline does not gray out as traversed.

Fixed an issue where the app stops responding when NavigationApi#areTermsAccepted accepted is called.

Removed a legacy startup operation that is no longer necessary in N+ Android that could cause an ANR in rare cases.

Fixed an issue where the app stops responding after a user taps on direction options multiple times.

July 07, 2023

5.0.0

Release 5.0.0

The Navigation SDK for Android version 5.0.0 is now available.

For information about this release, and for all previous releases, see the Release Notes page or subscribe to the Release Notes XML feed.

If you are a new user, see Set up your project to start using the SDK.

The minSdk for the NavSDK is now api level 23.

The targetSdk is now API level 33. This will be a requirement for all apps that deploy to Google play as of August 2023. See https://developer.android.com/google/play/requirements/target-sdk.

Removes the NavigationMapStyle class.

Removes NavigationView#setSpeedAlertOptions and SupportNavigationFragment#setSpeedAlertOptions. Use Navigator#setSpeedAlertOptions instead.

Removes Navigator#setDestinations(List<Waypoint> destinations, String routeToken)

and

Navigator#setDestinations(List<Waypoint> destinations, String routeToken, DisplayOptions displayOptions).

Use Navigator#setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions), and Navigator#setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions)
instead, respectively.

Removes NavigationView#setLocationMarkerEnabled and SupportNavigationFragment#setLocationMarkerEnabled. Use GoogleMap#setMyLocationEnabled instead.

Due to the change in privacy requirements apps displaying the notification drawer in Android 13, the Navigation SDK mobile notifications will no longer work unless customers request the runtime permission in their apps.

The NavSDK AAR bundle will no longer be directly distributed. Customers must update their build dependencies to use the GMaven repository instead. See https://developers.google.com/maps/documentation/navigation/android-sdk/set-up-project.

All ExternalCache methods and classes are deprecated and will be removed in NavSDK v6. These include the following methods on GoogleMap model class.

  • GoogleMap#setExternalCache
  • GoogleMap#setNetworkEnabled
  • GoogleMap#isNetworkEnabled

And the following model classes:

Apps that use the Navigation SDK must now enable Java 8 library support. See https://developer.android.com/studio/write/java8-support for instructions to update.

July 06, 2023

4.99.0

Release 4.99.0

The Navigation SDK for Android version 4.99.0 is now available.

For information about this release, and for all previous releases, see the Release Notes page or subscribe to the Release Notes XML feed.

If you are a new user, see Set up your project to start the installation process.

Update maneuver and lane icons to the latest Material design.

UiSettings#isMyLocationButtonEnabled() MapsSDK method now available in the NavSDK.

The following methods have been ported to Navigation SDK from Maps SDK: GoogleMapOptions#backgroundColor and GoogleMapOptions#getBackgroundColor. These make it possible to set the background color while map tiles are loading.

All public apis from the Maps SDK are now available in the NavSDK. Not all of these apis are applicable to the NavSDK and these differences are documented at http://developers.google.com/maps/documentation/navigation/android-sdk/reference.

NavSDK now requires androidx.appcompat:appcompat:1.6.X+. This library also requires a compileSDK of 33+.

Fixes a crash seen in the native library libgmm-jni.so.

FIxes a potential java.lang.SecurityException:

Permission Denial: opening provider
com.google.android.gsf.gservices.GservicesProvider
from {...} requires
com.google.android.providers.gsf.permission.READ_GSERVICES
or 
com.google.android.providers.gsf.permission.WRITE_GSERVICES

Fixed issue where map would no longer zoom out when repeatedly zooming out with two fingers.

Fixed timing edge cases with the terms of service controller.

Fixed some null-pointer exceptions by adding null-checks for listeners at callback time.

Fixed issue where ArrivalListener#onArrival(ArrivalEvent event) event was not triggered in certain scenarios.

Fixed a potential ConcurrentModificationException when executing GoogleMap#clear().

Fixed a potential ClassCastException when executing GoogleMap#addPolygon().

April 06, 2023

4.5.0

Refactored map tile loading and caching for memory improvements.

267285618: Reduce file system reads when initializing Navigator.

Navigation SDK for Android is now available in a public Maven repository. See Set up your project in the SDK documentation to learn more.

If your project must show the Terms and Conditions dialog, getNavigatorNoToS has no functionality.

March 07, 2023

4.4.1

260300835: Resolved IndexOutOfBoundsException crashes related to previewing alternate routes.

269564057: Resolved NullPointerException when user clicks the directions button in the toolbar when no marker is selected.

265111259: Resolved an ANR issue that can be triggered when checking the user's acceptance of terms and conditions.

265137693: Resolved an ANR related to blocked I/O operation.

260918253: Resolved an issue related to setMyLocationEnabled and failing to get user location immediately after granting access.

269761562, 265356198, 269484016: Fixes some memory leaks.

February 28, 2023

4.3.3

269761562, 265356198, 269484016: Fixes some memory leaks.

January 18, 2023

4.4.0

Support Android Auto so that developers can enable their app to provide a driver-optimized navigation experience with Android Auto.

260676765: This fix prevents ANRs that can happen during main-thread initialization I/O errors.

245127201: The distant view of the map no longer disappears during full tilt.

260300835: Prevents the IndexOutOfBoundsException issue related to previewing alternate routes.

Tapping on the Trip Progress Bar no longer changes the camera to birds eye view/overview mode.

Replaces the Google Navigation SDK sample app, originally in Java, with a Kotlin version. The Kotlin version of the sample app has the same features and functionalities as the Java version. The Java version is no longer supported.

December 12, 2022

4.3.2

203940646: Relaxes constraints on GoogleMap.setPadding to reduce crashes due to insufficient view height or width.

260565043: Mitigates ANRs related to fetching parameters from server at startup.

247717885: Adds precondition checks for invalid NaN in camera zoom parameter.

259569583: Mitigates ANR and deadlock during audio guidance playback by improving internal core synchronization.

193137126: Fixes day/night rendering across antimeridian.

November 02, 2022

4.3.1

Enables the Map Toolbar related methods UiSettings#isMapToolbarEnabled(), UiSettings#setMapToolbarEnabled(boolean), GoogleMapOptions#mapToolbarEnabled(boolean), GoogleMapOptions#getMapToolbarEnabled().

245357703: Fixes an issue that results in OutOfMemoryError and ANR.

247461649: Fixes a NullPointerException issue.

October 25, 2022

4.3.0

Allow developers to show traffic lights and stop signs during navigation.

Introduces previewing alternate routes before starting navigation, and selecting the number of alternate routes shown using alternateRoutesStrategy.

Adds UI improvements to the trip progress bar.

The Terms of Service dialogue shows a new text.

Deprecates the NavigationMapStyle API and the DEFAULT and HIGH_DETAIL constants. These constants enabled you to switch your app's default map view from a simple base map style to a detailed map style showing extra detailed tiles, including 2D building outlines on zoom level 18+ and 2D building numbers on zoom level 19+. Due to changes in the default base map for Android, these details are now enabled by default, so this constant is no longer necessary.

253307316: Fixes an issue that impacts memory usage and garbage collection.

254523699: Fixes an issue that results in memory leak.

Announcement: Freezing support for Android 5 (July 21, 2022)

For our latest SDK version (v4.1.2 and the later versions in v4.x), we are providing an additional year of support for apps running on Android 5, for both API levels 21 and 22.

What this means:

  • Navigation SDK and Driver SDK running on your Android apps will support a minimum Android 5 (API level 21) until June 30, 2023.
  • After June 30, 2023, we will support only Android API levels 23 and above. In other words, we will stop supporting Android API levels 21 and 22 across all SDK versions after that date. This means that bugs related to Android 21 or 22 in any SDK version (including 4.x) will not be fixed, and we do not guarantee that the SDKs will behave correctly.

This notice overrides the Android 21 and 22 support freezing notice from June 21, 2021, and the Android 23, 24, and 25 support freezing from October 18, 2021.

Version 4.2.2 (September 8, 2022)

Stability and Bug Fixes

  • Fixes a gRPC crash where io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider cannot be instantiated. The error frequently surfaced for apps depending on com.google.firebase:firebase-firestore alongside Navigation SDK for Android.

Version 4.2.1 (August 17, 2022)

Stability and Bug Fixes

Version 4.2.0 (July 01, 2022)

API changes

  • Provides the ability to expose the trip to ferry segments.

Stability and Bug Fixes

Version 4.1.4 (June 23, 2022)

Bug Fixes

  • Some customers experienced a NoSuchFieldError for style mod_text_appearance_headline7 on confirmation popups. This patch replaces the missing style and eliminates references to the missing style in the Navigation SDK artifacts.

Version 4.1.3 (May 25, 2022)

Bug Fixes

  • Fixes padding for the Google logo, compass, and the camera. Previously, these were not respecting the padding set by GoogleMap.setPadding().

Version 4.1.2 (May 20, 2022)

API changes

  • Downgrades the minimum Android API level for the Navigation SDK to 21.

Version 4.1.1 (March 29, 2022)

Bug Fixes

  • Some clients received a Terms of Service dialog error when the Android Activity was destroyed. Now clients will not longer experience this dialog error when an activity is destroyed.

  • Fixes a broken hyperlink in the Terms of Service dialog.

  • Previously, the progress bar was only visible in portrait mode. It is now visible in landscape mode as well..

  • The progress bar remains visible throughout navigation - even when camera is not in follow mode, and user is interacting with the map.

Version 4.1 (March 2, 2022)

API Changes

Bug Fixes

  • Updates the error-handling for the CustomRoutesOptions.Builder to be more informative when a malformed route token is passed in.

  • Handles an edge-case from Android framework with respect to the lifecycle of the navigation service.

Sample App Changes

  • Starting Navigation SDK v4.1, sample apps for the SDK are now released independently of the SDK artifact. Both can be found in the shared Google Drive, but they will no longer be bundled into the same .zip file.

  • The existing sample app, now called the "GoogleNavigation Demo" has been revamped significantly. Now, you can test a number of Navigation APIs at runtime (instead of having to recompile) with the new customization overlays. Also, the sample app build variants have been consolidated into one target.

  • A new sample app, the "GoogleMap Demo", has been added. This sample app demonstrates many of the behaviors developers are familiar with from the Google Maps APIs. The primary difference is the presence of a toggle button that switches the inflated view-variant between the MapView and the NavigationView, where applicable.

  • For more information, view the Getting Started page.

Version 4.0.3 (April 1, 2022)

Bug fixes

  • Fixes a broken hyperlink in the Terms of Service dialog.

  • Previously, the progress bar was only visible in portrait mode. It is now visible in landscape mode as well.

  • The progress bar remains visible throughout navigation - even when camera is not in follow mode, and user is interacting with the map.

Version 4.0.2 (February 25, 2022)

Bug fixes

Some clients received a Terms of Service dialog error when the activity was destroyed. The error has been fixed and clients will no longer experience the error.

Version 4.0.1 (February 15, 2022)

Bug fixes

Some Android clients experienced an "Application Not Responding" (ANR) error when the app initially loaded due to a network call that blocked the load. Now, app initialization should proceed without issue.

Version 4.0 (December 14, 2021)

API changes

  • Bumps the minimum Android API level for the Navigation SDK to 23, and bumps the target API level to 30. This target version is in-line with the Google Play requirements.
  • Adds the MapView, MapFragment and SupportMapFragment classes. Customers may find these classes useful in helping to transition off of the Maps SDK when migrating from v1 to v4.
  • Adds an API that enables a Trip Progress Bar. It displays a progress bar that lets drivers see the upcoming traffic along their route.
  • Updates the sample app to pull the Navigation SDK for Android artifact using the Maven artifact repository where it is housed. Previously, the sample app was built against the local .aar artifact.
  • Renders the polyline that trails the navigation chevron in the color "gray" to indicate that the user has already driven through that section of the route.

Stability and bug fixes

  • Fixes a ConcurrentModificationException that arises from certain usage patterns of the arrival listener.

Version 3.2.1 (December 16, 2021)

Stability and bug fixes

  • Fixes a crash that happens when navigation starts on Android API Level < 21.
  • Fixes a ConcurrentModificationException that arises from certain usage patterns of the arrival listener.

Announcement (October 18, 2021)

Freezing support for API Level 23, 24 and 25

Read revoked announcement

In response to changes in our internal dependencies, Android API Level 23, 24, and 25 (Android 6, 7.0 and 7.1) will not be supported in new versions of the Navigation and Driver SDKs for Android, beginning in the third quarter of 2022.

Navigation and Driver SDKs for Android versions released beginning in the third quarter of 2022 will only support devices running a minimum of Android API Level 26.

App versions built with v3.x or lower of the Navigation and Driver SDKs for Android will continue to work on devices running Android API Level 25 and below.

Version 3.2 (October 07, 2021)

API changes

  • Expose zoom control and indoor APIs from maps SDK.
  • Update attribute in GoogleMapOptions to specify the background color for the view which can be specified in the Android Manifest XML file for an Android app or programmatically during initialization.

Stability and bug fixes

  • Fixes a potential memory leak issue.
  • Fixes a bug that was producing ANR issues.
  • Prevents a crash originated by the Terms of Service dialog.

Deprecations

  • Deprecates Navigator#setDestinations with route token in favor of a new API that uses the new CustomRoutesOptions class.

** New Features **

  • Adds 2-Wheeler support for Custom Routes.

Version 3.1.3 (September 27, 2021)

Stability and bug fixes

  • The Navigation SDK for Android UI now automatically surfaces visual cues, like a greyed out location-marker and a “Searching for GPS” callout. This visual change occurs when the last-valid location becomes somewhat stale, and will automatically revert when the SDK receives new valid location updates.

Version 3.1.2 (September 17, 2021)

API changes

  • EXPERIMENTAL: Added a new API, GpsAvailabilityEnhancedLocationListener, that allows developers to listen to transitions in the GPS availability on the device.
    • This API is experimental, which means it is subject to removal or breaking changes in future releases. Please exercise discretion before adoption.

Version 3.1.1 (July 26, 2021)

Stability and bug fixes

  • Fixes an IllegalStateException associated with an overly restrictive preconditions check in implementation code.
  • Fixes a NullPointerException when panning to a screen location that cannot be translated into a geographic location.

Version 3.1.0 (June 23, 2021)

API changes

  • Speeding listeners are now supported in headless navigation. This makes it possible to monitor speeding without first rendering a View or a Fragment from the Navigation SDK.

Deprecations

The following methods have been deprecated in favor of Navigator.setSpeedAlertOptions():

  • NavigationView.setSpeedAlertOptions()
  • SupportNavigationFragment.setSpeedAlertOptions()

Stability and bug fixes

  • Fixed a crash in followMyLocation().
  • Fixed "Metadata key must not be null" NullPointerException.

Version 3.0.2 (July 26, 2021)

Stability and bug fixes

  • Fixes an IllegalStateException associated with an overly restrictive preconditions check in implementation code.
  • Fixes a NullPointerException when panning to a screen location that cannot be translated into a geographic location.

Deprecation announcement (June 21, 2021)

This announcement describes deprecations to the Navigation SDK for Android and Driver SDK for Android as of the date listed above. This announcement was also sent out as a Mandatory Service Announcement (MSA) to affected customers.

Navigation SDK for Android and Driver SDK for Android v1.x deprecation

Nav/Driver SDK v1 was released in 2018, and with our v3 versions soon to be released, it’s time to deprecate v1 to avoid the unsustainability of supporting many major versions.

The time saved by not having to support this additional version will allow us to better support the latest major version and build more features that are important to our customers.

Thus, Nav/Driver SDK v1.x is now deprecated and will no longer be maintained after June 21, 2022.

Please take a moment to see how deprecations in SDK versions work.

Read revoked announcement

The upcoming v4.0 of Navigation SDK for Android and Driver SDK for Android will support a minimum [Android 6.0 (API level 23)](https://developer.android.com/studio/releases/platforms#6.0){: .external}. The current minimum supported version is Android 5.0 (API level 21). We forecast releasing v4.0 in Q4 2021. This means:

  • App versions built with versions earlier than v4.x will continue to work on Android 21 and 22 devices. Your driver apps that have integrated our current SDKs will continue to work on devices running Android 21+. This is the same as before.
  • App versions built with Driver SDK for Android and Navigation SDK for Android v4.x (targeted for Q4 2021, subject to change) and after won’t be able to be installed on devices running Android 21 and 22. v4.x will run on minimum Android 6.0 (API level 23), so versions of your app built with the forthcoming v4.x can only be received by drivers with devices that have Android 23+. To reiterate, this means that both our SDK-related changes and any app changes you’ve made won’t reach drivers with devices running Android 21 and 22.

The versions of Navigation SDK for Android v3 and Driver SDK for Android v3 that you will want to upgrade to are explained in the following table along with when they’ll be available.

Which Driver platform features do you use? Do you use these capabilities? Then the first versions available that you should upgrade to are... Expected Availability
(subject to change)
Migration Links
Navigation only
(NavSDK methods)
No NavSDK v3.0.1 Now Guide
Yes NavSDK v3.5 (projected) Sep 2021
Navigation and Fleet Engine Tracking (NavSDK and DriverSDK methods) No Nav SDK v3.0 and Driver SDK v3.0 Driver v3.0 migration guide available at release
Yes NavSDK v3.x and DriverSDK v3.0

To continue using the removed methods, you may stay on v1.x, but without expectation of support or maintenance after June 21, 2022 (see next section).

We recommend you migrate to v3.x. This means:

  • The last release of v1.x will occur on Q4 2021 (and thus v1 is “feature frozen” from then).
  • This last release can be patched for 6 months thereafter, until June 21, 2022. After this time, we will not be able to respond to bug or feature requests for v1.x.

Please take a moment to review the following table and the [migration guide](/maps/documentation/navigation/android-sdk/migration) in order to help you navigate these changes.

What can I do by when?

If you're currently on... Do you use these capabilities? To upgrade now To upgrade in Sep 2021 Migration Links
v1.x
(not using FleetEngine.java / Driver functionality)
No NavSDK v3.0 Guide
Yes No option NavSDK 3.x
v1.x
(using FleetEngine.java / Driver functionality)
No No option NavSDK 3.x +
DriverSDK 3.x
The guide above, plus the Driver v3.0 migration guide available at release
Yes

We’d recommend that you notify your drivers with devices on Android 21 and 22 to upgrade to a newer version of Android (minimum Android 6.0) before you integrate Driver SDK for Android and Navigation SDK for Android version v4.x and above into your driver app.

Version 3.0.1 (May 20, 2021)

Stability and bug fixes

  • Fixed a crash in followMyLocation().
  • Fixed "Metadata key must not be null" NullPointerException.

Version 3.0 (May 10, 2021)

The Driver SDK for Android has been decoupled from the Navigation SDK for Android, and the two SDKs will be delivered as separate binaries on separate maintenance schedules. This change was done to make Driver SDK updates easier to test and integrate for customers. More details and guidance:

  • Navigation SDK usage is the same for version 2.x and version 3.0.
  • FleetEngine.java is in the Driver SDK AAR.
  • Driver SDK users should pick up Driver SDK version 3.0 from Maven (when available) and specify the 3.x version of Navigation SDK they wish to use.

New features

  • The TurnByTurn SDK lets you provide small-screen users, such as two-wheeled vehicle riders, with navigation information and visual cues such as upcoming maneuvers with icons (left, right, U-turn), turn numbers in roundabouts, road names, estimated distance and time to the next navigation step or final destination, and navigation state (en route, rerouting, stopped).

  • A new attribute has been added to GoogleMapOptions to specify the background color for the view, which you can specify in the Android Manifest XML file for an Android app or programmatically during initialization.

Stability and bug fixes

Fixed a camera bug where the recenter button appeared after moving the app to the background.

Decommissions

The following methods, which were marked deprecated in version 2.x, have been removed:

  • Navigator#startGuidance(resumeIntent)
  • NavigationApi#initForegroundServiceManager(*)
  • Waypoint#fromLatLng(*)
  • Waypoint#fromPlaceId(*)

Version 2.7.2 (July 14, 2021)

Stability and bug fixes

  • Fixes an IllegalStateException associated with an overly restrictive preconditions check in implementation code.
  • Fixes a NullPointerException when panning to a screen location that cannot be translated into a geographic location.
  • Adjusts some internal memory management in the Navigation SDK.

Version 2.7.1 (May 19, 2021)

Stability and bug fixes

  • Fixed a crash in followMyLocation().
  • Fixed "Metadata key must not be null" NullPointerException.

Version 2.7 (April 5, 2021)

New features

  • Added the FollowMyLocationOptions class, which allows you to set the zoom level during navigation. Added a followMyLocation method overload that takes a FollowMyLocationOptions object as a parameter.

  • Added the setNavigationMapStyle method, which allows you to enable the high detail navigation map style. The high definition navigation map style displays 2D building outlines at zoom level 19 or higher.

Stability and bug fixes

Fixed an issue that caused the camera's recenter button to appear after an app runs in the background.

Version 2.6 (March 15, 2021)

  • Added a new mandatory dependency. Add the following dependencies to your Gradle dependency lists to avoid runtime crashes: api 'joda-time:joda-time:2.9.9'.

New features

  • Updated the demo app to have a variant that stresses navigation behaviors through SupportNavigationFragment.
  • Updated the demo app to showcase some additional location-following behaviors.

Stability and bug fixes

  • Fixed an issue where 'follow my location' mode was not canceled upon camera movement.
  • Fixed an issue where the camera stops following the user's location after the caller stops turn-by-turn guidance.
  • Fixed an issue where consumers of the Navigation SDK using Joda-Time run into conflicts with the obfuscated version of jodatime which was packaged into our library.
  • Fixed an issue in which the Navigation SDK accidentally hides consumer-app notifications it does not own upon launching a navigation session.

Driver SDK

  • The Fleet Engine createInstance method now requires the caller to pass in a Navigator instance. This is a breaking change, and your app will fail to compile unless you update all relevant invocation sites in your code.
  • Adds methods to Navigator to register and remove listeners for updates to traffic data.

Version 2.5.2 (March 29, 2021)

  • Fixed an issue where the camera stops following the user's location after the caller stops turn-by-turn guidance.

Version 2.5.1 (January 29, 2021)

  • Fixed an issue where 'follow my location' mode was not canceled upon camera movement.

Version 2.5 (December 15, 2020)

API changes

  • Added two new methods to the Navigator API to allow setting and removing listeners for new navigation sessions.

  • Added a new method to the Navigator API to obtain transaction IDs for the ongoing navigation session. This API should be used when a new navigation session starts and when the transaction IDs change in an ongoing navigation session (e.g. when the list of journey segments is updated).

Version 2.4.1 (January 29, 2021)

  • Fixed an issue where 'follow my location' mode was not canceled upon camera movement.

Version 2.4 (November 5, 2020)

  • Added the Navigator.ReroutingListener class. Register the ReroutingListener on the Navigator instance by calling addReroutingListener; use removeReroutingListener to unregister.

  • Modified the FleetEngine.createInstance class constructor, added wrappers for AuthTokenFactory and StatusListener.

  • Fixed a race condition that could cause a crash under the right conditions.

Version 2.3.1 (January 26, 2021)

  • Fixed an issue where 'follow my location' mode was not canceled upon camera movement.

Version 2.3 (September 18, 2020)

  • You can now pass a route token to NavSDK to retrieve the route represented by that route token. The route token is associated with a route response when you call the Routes Preferred API. The new API is Navigator#setDestination(List<Waypoint> destinations, String routeToken).

  • Added some new mandatory dependencies. Add the following dependencies to your Gradle dependency lists to avoid runtime crashes:

    api 'com.google.android.datatransport:transport-api:2.2.0'
    api 'com.google.android.datatransport:transport-backend-cct:2.2.0'
    api 'com.google.android.datatransport:transport-runtime:2.2.0'
    

Version 2.2 (August 10, 2020)

New features

  • Repackaged the embedded Google Maps SDK's package name from libraries.maps to gms.maps. To migrate, take these steps:

    • Change all references of com.google.android.libraries.maps to com.google.android.gms.
    • Update your build.gradle to exclude the Google Play Services version of the Maps SDK for Android. See the build.gradle file in the sample app for an example.
  • Reintroduced the Waypoint parameter in NavigationTransactionRecorder pickup and dropoff methods.

  • Added the Waypoint.Builder.setVehicleStopover API that enables/disables the automatic relocation of stopovers in the route when waypoints are set in a place where it is not possible to stop.

  • Added a parameter SpeedAlertSeverity to the SpeedAlert callback. Use this parameter with the SpeedingListener.

Stability and bug fixes

  • Deprecated NavigationApi.cleanUp method due to unwanted side effects like NullPointerExceptions leading to crashes.

  • Deprecated Waypoint.fromLatLng() and Waypoint.fromPlaceId() in favor of Waypoint.builder().

  • Deprecated the AddressListener class, contained in the NavigationTransactionRecorder, because it is unused.

Version 2.1 (April 9, 2020)

New features

  • Customizable fonts/colors/icons for the Navigation header.

  • Support customization of the color of the recommended lane(s) in the Navigation Header UI.

  • Updates several APIs to follow the add-remove pattern for setting callbacks/listeners. Previous set* methods have been marked deprecated and will be removed in a future release. The deprecated methods are listed here:

    • SupportNavigationFragment.setOnNightModeChangedListener
    • SupportNavigationFragment.setOnRecenterButtonClickedListener
    • NavigationFragment.setOnNightModeChangedListener
    • NavigationFragment.setOnRecenterButtonClickedListener
    • NavigationView.setOnNightModeChangedListener
    • NavigationView.setOnRecenterButtonClickedListener
    • Navigator.setArrivalListener
    • Navigator.setRouteChangedListener
    • Navigator.setRemainingTimeOrDistanceChangedListener

Stability and bug fixes

  • Bump up the minSdkVersion for navsdk to 19.

  • Fixed a bug where lat/lng Waypoint names were not honored in case server-side reverse geocoding fails.

Version 2.0 (October 15, 2019)

New features

Navigation SDK 2.0 incorporates the Maps SDK map renderer and surfaces Maps SDK APIs. This NavSDK version enables developers to access most of the Maps API features while navigating such as drawing polygons, overlays and polylines. Developers can also control the map styling for navigation and have some additional camera controls. The driver experience improves with this version as the MapView --> Navigation switch will be instantaneous since the map is shared across the two modes.

API changes

  • The following classes have been removed:

    • com.google.android.libraries.navigation.LatLng
    • com.google.android.libraries.navigation.LatLngBounds
    • com.google.android.libraries.navigation.Marker
    • com.google.android.libraries.navigation.MarkerOptions
  • They have been replaced by:

    • com.google.android.gms.maps.model.LatLng
    • com.google.android.gms.maps.model.LatLngBounds
    • com.google.android.gms.maps.model.Marker
    • com.google.android.gms.maps.model.MarkerOptions