Step-by-step guide
This guide helps you migrate your existing TomTom’s Maps SDK and Navigation SDK projects from version 1 to version 2. Version 2 introduces significant improvements and architectural changes which require updates to your project configuration and code.
Overview of Changes
Version 2 introduces several major changes:
- Module restructuring: Modules have been reorganized and renamed for better clarity and ease of integration.
- Product flavors: Added support for product flavors in the SDK artifacts.
- Android SDK updates: Switch
compileSdkfrom Android API level 34 to 35. - Package name changes: Some classes have been moved to a different package.
- Permission updates: Some modules require additional permissions.
- TomTom Orbis Maps: SDKs are moving from TomTom Maps to TomTom Orbis Maps.
Breaking Changes
Module Restructuring
The SDK has been reorganized to improve clarity and reduce complexity. You’ll need to update the references to the SDK modules in your build script or catalogue.
The following examples show how to migrate your dependency declarations from version 1 to version 2. Replace your existing version 1 dependencies with their corresponding version 2 equivalents:
Common Modules
// Version 1implementation("com.tomtom.sdk.common:android:1.26.4")implementation("com.tomtom.sdk.common:metadata:1.26.4")
// Version 2implementation("com.tomtom.sdk.common:core:2.1.2")Data Management
// Version 1implementation("com.tomtom.sdk.datamanagement:nds-store:1.26.4")implementation("com.tomtom.sdk.datamanagement:nds-store-updater:1.26.4")implementation("com.tomtom.sdk.datamanagement:navigation-tile-store:1.26.4")implementation("com.tomtom.sdk.datamanagement:navigation-data-store-hybrid:1.26.4")
// Version 2implementation("com.tomtom.sdk.datamanagement:data-store:2.1.2")// Version 1implementation("com.tomtom.sdk.mapreferences:model:1.26.4")
// Version 2implementation("com.tomtom.sdk.datamanagement:map-references:2.1.2")Map Display
For a comprehensive guide on setting up and using Map Display in version 2, see the Map Display Quickstart guide .
// Version 1implementation("com.tomtom.sdk.maps:map-display-api:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-display-common:2.1.2")// Version 1implementation("com.tomtom.sdk.maps:map-display:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-display-standard:2.1.2")// Version 1implementation("com.tomtom.sdk.maps:style-provider-offline:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-display-style-provider-offline:2.1.2")Maps Data Providers
// Version 1implementation("com.tomtom.sdk.maps:data-provider:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-tile-store-common:2.1.2")// Version 1implementation("com.tomtom.sdk.maps:map-data-provider:1.26.4")implementation("com.tomtom.sdk.maps:map-data-store-online:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-tile-store:2.1.2")// Version 1implementation("com.tomtom.sdk.maps:traffic-data-provider:1.26.4")implementation("com.tomtom.sdk.maps:hybrid-data-provider:1.26.4")implementation("com.tomtom.sdk.maps:data-provider-offline:1.26.4")implementation("com.tomtom.sdk.maps:map-tile-store-offline:1.26.4")implementation("com.tomtom.sdk.maps:map-tile-store-hybrid:1.26.4")
// Version 2implementation("com.tomtom.sdk.maps:map-tile-store-navigation:2.1.2")Navigation
// Version 1implementation("com.tomtom.sdk.navigation:navigation-engines:1.26.4")implementation("com.tomtom.sdk.navigation:navigation-hybrid:1.26.4")implementation("com.tomtom.sdk.navigation:navigation-offline:1.26.4")implementation("com.tomtom.sdk.navigation:navigation-online:1.26.4")// All other com.tomtom.sdk.navigation:navigation-* modules
// Version 2implementation("com.tomtom.sdk.navigation:navigation:2.1.2")// Version 1implementation("com.tomtom.sdk.navigation:service:1.26.4")
// Version 2implementation("com.tomtom.sdk.navigation:ui:2.1.2")Routing
// Version 1implementation("com.tomtom.sdk.routing:common:1.26.4")implementation("com.tomtom.sdk.routing:model:1.26.4")implementation("com.tomtom.sdk.routing:route-planner:1.26.4")implementation("com.tomtom.sdk.routing:route-planner-api-coroutines:1.26.4")
// Version 2implementation("com.tomtom.sdk.routing:routing-common:2.1.2")// Version 1implementation("com.tomtom.sdk.routing.range:range-calculator:1.26.4")implementation("com.tomtom.sdk.routing:range-calculator-offline:1.26.4")implementation("com.tomtom.sdk.routing:range-calculator-online:1.26.4")
// Version 2implementation("com.tomtom.sdk.routing:range-calculator:2.1.2")// Version 1implementation("com.tomtom.sdk.routing:route-planner-offline:1.26.4")implementation("com.tomtom.sdk.routing:route-planner-online:1.26.4")implementation("com.tomtom.sdk.routing:route-planner-hybrid:1.26.4")
// Version 2implementation("com.tomtom.sdk.routing:route-planner:2.1.2")Search
// Version 1implementation("com.tomtom.sdk.search:search:1.26.4")implementation("com.tomtom.sdk.search:reverse-geocoder:1.26.4")implementation("com.tomtom.sdk.search:dynamic-data:1.26.4")implementation("com.tomtom.sdk.search:structured-search:1.26.4")
// Version 2implementation("com.tomtom.sdk.search:search-common:2.1.2")// Version 1implementation("com.tomtom.sdk.search:search-online:1.26.4")implementation("com.tomtom.sdk.search:search-offline:1.26.4")implementation("com.tomtom.sdk.search:search-hybrid:1.26.4")implementation("com.tomtom.sdk.search:structured-search-offline:1.26.4")implementation("com.tomtom.sdk.search:dynamic-data-online:1.26.4")implementation("com.tomtom.sdk.search:search-custom-data-online:1.26.4")
// Version 2implementation("com.tomtom.sdk.search:search:2.1.2")// Version 1implementation("com.tomtom.sdk.search:reverse-geocoder-online:1.26.4")implementation("com.tomtom.sdk.search:reverse-geocoder-offline:1.26.4")implementation("com.tomtom.sdk.search:reverse-geocoder-hybrid:1.26.4")
// Version 2implementation("com.tomtom.sdk.search:reverse-geocoder:2.1.2")Traffic
// Version 1implementation("com.tomtom.sdk.traffic:client:1.26.4")
// Version 2implementation("com.tomtom.sdk.traffic:traffic-client:2.1.2")// Version 1implementation("com.tomtom.sdk.traffic:traffic-client-api:1.26.4")implementation("com.tomtom.sdk.traffic:model:1.26.4")
// Version 2implementation("com.tomtom.sdk.traffic:traffic-common:2.1.2")Safety Locations
// Version 1implementation("com.tomtom.sdk.safetylocations:safetylocations-online:1.26.4")
// Version 2implementation("com.tomtom.sdk.safetylocations:safetylocations:2.1.2")// Version 1implementation("com.tomtom.sdk.safetylocations:safetylocations-model:1.26.4")
// Version 2implementation("com.tomtom.sdk.safetylocations:safetylocations-common:2.1.2")Hazards
// Version 1implementation("com.tomtom.sdk.hazards:hazards-online:1.26.4")
// Version 2implementation("com.tomtom.sdk.hazards:hazards:2.1.2")// Version 1implementation("com.tomtom.sdk.hazards:hazards-model:1.26.4")
// Version 2implementation("com.tomtom.sdk.hazards:hazards-common:2.1.2")Personalization
// Version 1implementation("com.tomtom.sdk.personaldata:personal-data-api:1.26.4")
// Version 2implementation("com.tomtom.sdk.personaldata:personal-data-common:2.1.2")Vehicle
// Version 1implementation("com.tomtom.sdk.vehicle:model:1.26.4")
// Version 2implementation("com.tomtom.sdk.vehicle:vehicle-common:2.1.2")Text-to-Speech
// Version 1implementation("com.tomtom.sdk:tts-engine-api:1.26.4")implementation("com.tomtom.sdk:tts-engine-android:1.26.4")
// Version 2implementation("com.tomtom.sdk:tts:2.1.2")Product Flavors Configuration
Version 2 introduces product flavors to better organize SDK variants. You must add a configuration to your app’s build script.
android { defaultConfig { missingDimensionStrategy("tomtom-sdk-version", "complete") }}Android Compile SDK Update
Update your app’s compileSdk version to Android API level 35 to ensure compatibility with the SDK:
android { compileSdk = 35}Package Name Changes
Several classes have moved to different packages:
com.tomtom.sdk.common.android.LocationMapper
// Version 1import com.tomtom.sdk.common.android.LocationMapper
// Version 2import com.tomtom.sdk.location.android.LocationMapperAdditionally, update the dependency for LocationMapper:
// Version 1 - was in common moduleimplementation("com.tomtom.sdk.common:android:1.26.4")
// Version 2 - moved to location moduleimplementation("com.tomtom.sdk.location:provider-android:2.1.2")com.tomtom.sdk.mapreferences.*
// Version 1import com.tomtom.sdk.mapreferences.MapIdimport com.tomtom.sdk.mapreferences.MapPositionimport com.tomtom.sdk.mapreferences.MapReferencesimport com.tomtom.sdk.mapreferences.RegionId
// Version 2import com.tomtom.sdk.datamanagement.mapreferences.MapIdimport com.tomtom.sdk.datamanagement.mapreferences.MapPositionimport com.tomtom.sdk.datamanagement.mapreferences.MapReferencesimport com.tomtom.sdk.datamanagement.mapreferences.RegionIdNo changes to the artifact name.
Permission updates
Navigation UI
If you’re using the Navigation UI module, you’ll need to add new permissions to your AndroidManifest.xml. These permissions are required for the navigation service to run in the foreground and display notifications to users:
<!-- Add these permissions to your AndroidManifest.xml --><uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><uses-permission android:name="android.permission.POST_NOTIFICATIONS" />Also note the module relocation from the service module to the ui module:
// Version 1implementation("com.tomtom.sdk.navigation:service:1.26.4")
// Version 2implementation("com.tomtom.sdk.navigation:ui:2.1.2")TomTom Orbis Maps
APIs launching with version 2 use the TomTom Orbis Maps for all SDK operations. This provides improved performance, better data quality, and enhanced features compared to the previous TomTom Maps services. If your app was previously using the TomTomOrbisMapFeature feature toggle in public preview, your code will need to be modified to migrate to the new APIs.
Migrating from TomTomOrbisMapFeature
If your app was previously using the TomTomOrbisMapFeature feature toggle:
- Remove the feature toggle from your code
// Remove the following lineFeatureToggleController.enable(TomTomOrbisMapFeature)- Update service initialization to use the new APIs (examples below)
TomTomSdk initialization
The TomTom Maps and Navigation SDK is now handled through a single entry point: TomTomSdk. It supports Online-only user experience and its configuration is handled through TomTomSdk.
The following snippets require to initialize TomTomSdk before using it. Please, refer to the Navigation SDK Initialization Guide guide on how to initialize it.
Search Migration
- Identify uses of
OnlineSearch.createfactory function
search = OnlineSearch.create(context = this, BuildConfig.TOMTOM_API_KEY)- Substitute them with the corresponding new API:
search = TomTomSdk.createSearch()Reverse Geocoder Migration
- Identify uses of
OnlineReverseGeocoder.createfactory function
reverseGeocoder = OnlineReverseGeocoder.create( context = this, apiKey = BuildConfig.TOMTOM_API_KEY,)- Substitute them with the corresponding new API:
reverseGeocoder = TomTomSdk.createReverseGeocoder()Routing Migration
- Identify uses of
OnlineRoutePlanner.createfactory function
routePlanner = OnlineRoutePlanner.create( context = this, apiKey = BuildConfig.TOMTOM_API_KEY,)- Substitute them with the corresponding new API:
routePlanner = TomTomSdk.createRoutePlanner()Navigation Migration
- Identify uses of
OnlineTomTomNavigationFactory.createfactory function
navigation = OnlineTomTomNavigationFactory.create( Configuration( context = this, navigationTileStore = navigationTileStore, locationProvider = locationProvider, routePlanner = routePlanner, ),)- Substitute them with the corresponding new API:
navigation = TomTomSdk.navigationMap Display Changes
No code changes are required. Map Display will automatically use TomTom Orbis Maps in version 2.