Skip to content

Building the Android app

To build the Android app you need Node 22 or later, JDK 21 and the Android SDK (platform 36). Without Android Studio, for example (no root needed):

# JDK 21 (Temurin) in ~/.local/share/jdk-21, and the SDK's command-line tools in ~/Android/Sdk,
# from https://adoptium.net and https://developer.android.com/studio#command-line-tools-only, then:
export JAVA_HOME=~/.local/share/jdk-21 ANDROID_HOME=~/Android/Sdk
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0"

cd mobile
npm ci
npm run build:debug          # mobile/android/app/build/outputs/apk/debug/app-debug.apk
adb install -r android/app/build/outputs/apk/debug/app-debug.apk   # a phone with USB debugging on

Debug builds are their own app, Nessie Dev (io.github.jonp92.nessie.debug), so they install beside the released app instead of over it.

mobile/www holds the app's own pages (which server; can't reach it), and mobile/android/app/src/main/java/…/ShellPlugin.java which server it opens. Debug builds can be inspected from Chrome on the computer (chrome://inspect), and driven by Playwright over the same connection.

To try Android Auto without a car, use Google's Desktop Head Unit (sdkmanager "extras;google;auto"; on Linux it needs libc++1, and runs under xvfb-run without a display). On the phone, turn on Android Auto's developer settings (see the apps), then ⋮ → Start head unit server; then adb forward tcp:5277 tcp:5277 and $ANDROID_HOME/extras/google/auto/desktop-head-unit. Its console takes tap x y and screenshot file.png. CarVoiceTest does what the assistant does (playFromSearch): run it with am instrument as its comment says, not connectedDebugAndroidTest, which uninstalls the app afterwards.