Docs / Setup / Android / HERE

HERE setup

How to drive the HERE SDK (Explore Edition) through MapConductor. HERE ships an AAR rather than a Maven artifact, so there is a file-drop step.

MODULE
com.mapconductor:for-here
API KEY
Key ID + secret
VIEW
HereMapView
TIME
25 min
Same provider, other platformsiOSReact

Before you start

An Android development environment (Android Studio)
A HERE developer account
An access key ID and access key secret
The HERE SDK Explore Android AAR (any 4.26.x release)
STEP 01

Get the credentials and the AAR

  1. Create a HERE developer account.
  2. Create a project in the HERE Developer Portal.
  3. Generate an access key ID and secret.
  4. Download the HERE SDK Explore Android AAR. Anything in the 4.26 line should work.
STEP 02

Drop the AAR into the project

Put the AAR under the project's libs/ directory. The file name must match exactly what Gradle references.

project layouttext
<project root>/
└── libs/
    └── heresdk-explore-android-4.26.5.0.299343.aar
The build number in that file name is only a reference — it is the version MapConductor is developed and verified against, not one you have to pin to. MapConductor deliberately leans on as little of each map SDK's surface as it can, so a different build generally works fine. Substitute the file name of the AAR you actually downloaded.
CAUTION
The HERE SDK AAR is not freely redistributable — keep it out of public version control by adding libs/heresdk-*.aar to .gitignore.
STEP 03

Add the Secrets Gradle Plugin

This is how the key stays out of source control: the plugin reads secrets.properties and substitutes the value into the AndroidManifest.xml placeholder at build time.

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 04

Add the dependencies

The AAR is referenced as a local file — match the name to the one you actually placed.

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // HERE SDK (local AAR).
    // This build number is only the one MapConductor is developed against —
    // use the file name of the AAR you downloaded.
    implementation(
        files("${rootProject.projectDir}/libs/heresdk-explore-android-4.26.5.0.299343.aar")
    )

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.2.0"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-here")
}
STEP 05

Wire the manifest and the credentials

HERE uses a pair — an ID and a secret. Both go through placeholders.

AndroidManifest.xmlXML
<manifest>
    <!-- Add internet and location permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- HERE Access Key ID -->
        <meta-data
            android:name="HERE_ACCESS_KEY_ID"
            android:value="${HERE_ACCESS_KEY_ID}" />

        <!-- HERE Access Key Secret -->
        <meta-data
            android:name="HERE_ACCESS_KEY_SECRET"
            android:value="${HERE_ACCESS_KEY_SECRET}" />
    </application>
</manifest>
secrets.propertiesProperties
HERE_ACCESS_KEY_ID=your_actual_here_access_key_id
HERE_ACCESS_KEY_SECRET=your_actual_here_access_key_secret
CAUTION
Never commit secrets.properties. Add it to .gitignore so it cannot slip in, and feed the value through environment variables (or another secure channel) in CI.

VERIFY

What you should see

The setup is complete when the HERE map renders.

TestHere.ktJetpack Compose
@Composable
fun TestHere(modifier: Modifier = Modifier) {
    val mapState = rememberHereMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    HereMapView(modifier = modifier, state = mapState)
}

Map designs

HereMapDesign maps onto HERE's map schemes — day/night pairs plus purpose-built styles.

HereMapDesign
Notes
NormalDay / NormalNight
The standard style, day and night
Satellite
Satellite imagery
HybridDay / HybridNight
Satellite imagery with roads and labels
LiteDay / LiteNight
Lightweight, reduced-detail styles
LogisticsDay
Tuned for logistics
RoadNetworkDay
Road-network emphasis

Troubleshooting

The map never loads

  • Check the access key ID and secret in secrets.properties.
  • Confirm the key is still active.

Gradle cannot find the AAR

  • Check the AAR is in libs/.
  • Make sure the file name matches build.gradle.kts exactly, version number included.

The build fails

  • Check that the map SDK coordinates and version match what your version catalog declares.
  • Make sure the repository is declared in settings.gradle.kts — with repositoriesMode set to FAIL_ON_PROJECT_REPOS, per-module repositories blocks are ignored.
  • If several map SDKs are present at once, look for dependency clashes with ./gradlew :app:dependencies.

Next

Once HereMapView renders, overlays go on through the same shared API as every other provider.