Save threadtime-format logcat to screen-recordings/logcat.log in the
background, in parallel with the screenrecord loop, and stop it after
the test exits. The existing screen-recordings/ artifact upload picks
it up automatically.
The ${{ env.ANDROID_HOME }} expression resolves against workflow-level
env, not the runner's process environment, so the NDK and AVD system-
image cache paths came out empty-prefixed and the saves were dropped
with "Path Validation Error". Hardcode the ubuntu-latest sdk path
(/usr/local/lib/android/sdk) for both.
Also fix the screen recording: touch the sentinel file BEFORE launching
the background loop, otherwise the loop sees no file on its first
iteration and exits immediately, producing zero recordings.
- setup-go: point cache-dependency-path to netbird/go.sum so the Go
module cache actually restores (build-android-lib.sh shaves ~1-2 min).
- Cache the NDK install dir and the gomobile binary by pinned version,
skipping the corresponding install step on cache hit.
- Cache the AVD plus the API 30 google_apis x86_64 system image, add a
warm-up step that boots once to capture a snapshot, and run tests with
force-avd-creation=false plus -no-snapshot-save so subsequent jobs
load the cached snapshot without overwriting it.
- Move the screenrecord/gradle/pull pipeline to
.github/scripts/run-instrumented-tests.sh because the emulator-runner
action executes each line of the inline script as a separate sh -c,
which broke the multi-line subshell loop.