New build_android job running on ubuntu-latest:
- setup-java@v4 with JDK 17 (Temurin) matching compileOptions
- npm ci + build:userscript (same as iOS job)
- Gradle cache keyed on wrapper + root/app build.gradle hashes
- ./gradlew assembleRelease --no-daemon
- Artifact: Movix-Android-<version>, retention 30 days
Both jobs now triggered independently via workflow_dispatch booleans
(build_ios / build_android, both default true).
APK is debug-signed (falls back to signingConfigs.debug when no
keystore.properties) — suitable for sideloading.
https://claude.ai/code/session_01X52sah6aUu3ou26uJWHgzr
src/injection/userscript-source.ts is .gitignored (generated from
userscript/movix.user.js). Metro bundler fails at bundle phase with
UnableToResolveError when it tries to import ./userscript-source.
Add `npm run build:userscript` step after npm ci to generate the file.
Also: pipe xcodebuild through tee to save raw log + use ${PIPESTATUS[0]}
for correct exit code propagation. Upload raw log as artifact on failure
to expose the full error without xcpretty truncation.
https://claude.ai/code/session_01X52sah6aUu3ou26uJWHgzr