Skip to content
Latchkey

React Native "SDK location not found" (local.properties) in CI

The Android Gradle build resolves the SDK path from ANDROID_HOME/ANDROID_SDK_ROOT or android/local.properties sdk.dir. In CI, local.properties is gitignored and the env var may be unset, so Gradle reports the SDK location is not found.

What this error means

The Android build fails early with "SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local.properties file".

Gradle
* What went wrong:
A problem occurred configuring project ':app'.
> SDK location not found. Define a valid SDK location with an ANDROID_HOME
  environment variable or by setting the sdk.dir path in your project's
  local.properties file at '/home/runner/work/app/app/android/local.properties'.

Common causes

local.properties is not committed

android/local.properties is correctly gitignored, so a CI checkout has no sdk.dir.

ANDROID_HOME / ANDROID_SDK_ROOT unset

No env var points at the SDK, so Gradle has no fallback to locate it.

How to fix it

Export ANDROID_SDK_ROOT in CI

Provision the SDK and set the env var so Gradle finds it without local.properties.

.github/workflows/ci.yml
- uses: android-actions/setup-android@v3
- run: echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> "$GITHUB_ENV"

Generate local.properties in the build step

Write sdk.dir from the env var before invoking Gradle.

Terminal
echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties

How to prevent it

  • Provision the Android SDK and export ANDROID_SDK_ROOT in CI.
  • Never commit local.properties; generate it in the pipeline.
  • Cache the SDK to avoid re-provisioning each run.

Frequently asked questions

What causes ""SDK location not found""?
android/local.properties is correctly gitignored, so a CI checkout has no sdk.dir.
How do I fix "SDK location not found"?
Provision the SDK and set the env var so Gradle finds it without local.properties.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card