Subscribe to these release notes.
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.November 11, 2024
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
Fixed IllegalStateException in MediaRouter. This exception happened after getting a MediaRouter instance after stopping navigation.
November 16, 2023
Fixed IllegalStateException in MediaRouter caused by getting an instance of MediaRouter from a non-main thread.
November 02, 2023
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:
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
Fixed getting stale location with updated time stamp.
September 22, 2023
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:
- If you are migrating from Kotlin 1.6 or 1.7, follow the migration guide if your app uses Kotlin synthetics
- Use the compatibility guide for Kotlin 1.9 to understand differences between 1.8 and 1.9
- Ensure the Gradle/Android Gradle plugin versions are in the range defined by Kotlin Gradle plugin version 1.9.0
September 21, 2023
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
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
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
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
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
269761562, 265356198, 269484016: Fixes some memory leaks.
January 18, 2023
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
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
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
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 oncom.google.firebase:firebase-firestore
alongside Navigation SDK for Android.
Version 4.2.1 (August 17, 2022)
Stability and Bug Fixes
- Fixes a null pointer issue when processing deferred map click events.
- Fixes a null pointer issue in
GoogleMap.setMyLocationEnabled
.
Version 4.2.0 (July 01, 2022)
API changes
- Provides the ability to expose the trip to ferry segments.
Stability and Bug Fixes
- Fixes a memory leak in
Marker.setIcon
. - Fixes issue where
GoogleMap.setPadding
was not working. - Updates all dependencies.
Version 4.1.4 (June 23, 2022)
Bug Fixes
- Some customers experienced a
NoSuchFieldError
for stylemod_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
Introduces the
setTripProgressBarEnabled
method onSupportNavigationFragment
. Previously, this method was only available on theNavigationView
. See Trip Progress Bar for more information.Introduces the StreetView APIs into the Navigation SDK. The primary entry-points are the
SupportStreetViewPanoramaFragment
,StreetViewPanoramaFragment
andStreetViewPanoramaView
, just as they are in Google Maps SDK for Android. To get started using StreetView within the Navigation SDK, view the corresponding documentation. Then see the "GoogleMap Demo" to understand how the APIs are integrated in the sample app.Introduces the
setNavigationUiEnabled
method onNavigationView
andSupportNavigationFragment
. These methods allow you to switch between a "map-focused" and "navigation-focused" user-experience in your UI. These methods may take effect asynchronously; e.g. if theNavigator
has not been created yet, the requested setting will not be honored right away. We recommend registering theOnNavigationUiChangedListener
to be informed when the requested setting forsetNavigationUiEnabled
has been honored by the UI.Deprecates the
setLocationMarkerEnabled
API onNavigationView
andSupportNavigationFragment
in favor of a newly-added method,GoogleMap.setMyLocationEnabled
. You can also register theGoogleMap.OnMyLocationClickListener
to react to click events on the location marker.Adds the method
GoogleMap.getMyLocation
and the related listenerGoogleMap.OnMyLocationChangeListener
. These methods are already deprecated in the Google Maps APIs, but we supply them for your convenience and to ease the migration from the Google Maps APIs.
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 theNavigationView
, 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
andSupportMapFragment
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 aFragment
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.
Navigation and Driver SDK Android 21 and 22 end of support
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 afollowMyLocation
method overload that takes aFollowMyLocationOptions
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 aNavigator
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 theReroutingListener
on theNavigator
instance by callingaddReroutingListener
; useremoveReroutingListener
to unregister.Modified the
FleetEngine.createInstance
class constructor, added wrappers forAuthTokenFactory
andStatusListener
.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
togms.maps
. To migrate, take these steps:- Change all references of
com.google.android.libraries.maps
tocom.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.
- Change all references of
Reintroduced the
Waypoint
parameter inNavigationTransactionRecorder
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 theSpeedAlert
callback. Use this parameter with theSpeedingListener
.
Stability and bug fixes
Deprecated
NavigationApi.cleanUp
method due to unwanted side effects likeNullPointerExceptions
leading to crashes.Deprecated
Waypoint.fromLatLng()
andWaypoint.fromPlaceId()
in favor ofWaypoint.builder()
.Deprecated the
AddressListener
class, contained in theNavigationTransactionRecorder
, 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