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.