Android Emulators
Namespace runners support hardware-accelerated Android virtualization using KVM. This enables fast Android emulator testing without the performance penalty of software emulation.
KVM is enabled by default on all Namespace runners, so no additional setup is required.
Getting started
Create a runner profile
We recommend using a dedicated profile for Android Emulator workflows.
Go to your runner profiles and create a profile named namespace-profile-android with:
- Linux on amd64/x86 (
linux/amd64) - Enough resources for your emulator,
4 vCPU x 8 GB RAMis a good starting point - Caching enabled to cache Gradle dependencies.
Then use the created profile as your runs-on label:
jobs:
android-tests:
runs-on: namespace-profile-androidSet up caching
Use namespacelabs/nscloud-cache-action to
cache Gradle dependencies for faster builds:
- name: Set up Gradle cache
uses: namespacelabs/nscloud-cache-action@v1
with:
cache: gradleSet up JDK and Android SDK
Use actions/setup-java and android-actions/setup-android to install the required tooling:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Set up Android SDK
uses: android-actions/setup-android@v3Run the emulator
Start an emulator and run your tests, for example by using the reactivecircus/android-emulator-runner action:
- name: Run Android tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 30
arch: x86_64
script: ./gradlew connectedCheckFull example
Here's a complete workflow for running Android tests:
name: Android Tests
on:
push:
branches: [main]
pull_request:
jobs:
android-tests:
runs-on: namespace-profile-android
steps:
- name: Checkout repository
uses: namespacelabs/nscloud-checkout-action@v7
- name: Set up Gradle cache
uses: namespacelabs/nscloud-cache-action@v1
with:
cache: gradle
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Run Android tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 30
arch: x86_64
script: ./gradlew connectedCheckRelated documentation
- Machine Shapes — Available machine configurations
- Caching — Speed up builds with cache volumes