Skip to content

Build and tests

This page documents only the existing General Audience build paths used for published Android artifacts. No separate General Audience workflow is required: both established Android workflows expose the product_variant input.

Requirements

Tool Version / role
Node.js 24
npm dependency installation and scripts
JDK 21 for Android builds
Android SDK API 36 and build-tools 36.0.0
Python badge asset generation
Pillow pinned in tools/badges/requirements.txt

Android builds run on the local self-hosted Windows worker with the labels [self-hosted, windows, x64].

General Audience web assets

Vite's general mode sets VITE_PRODUCT_VARIANT=general-audience at build time.

npm.cmd ci
npm.cmd run build:general

For Android synchronization, use:

npm.cmd run android:sync:general

Do not run the ordinary android:sync afterwards: it replaces the copied web assets with the full Recovery variant.

Debug APK

Use the existing workflow:

  • Workflow: Build Android debug APK
  • File: .github/workflows/android-debug-apk.yml
  • Runner: local
  • Product variant: general-audience

The local job installs dependencies, runs smoke, UI and release-metadata tests, synchronizes the General Audience web assets and builds the debug APK. An optional protected update-signing key is used when configured.

Artifacts are stored on the worker under C:\SteadyBuilds\debug, including a numbered file and:

Steady-1.0.0-alpha.19-debug-apk-general-audience-latest.apk

The equivalent direct local command is:

npm.cmd run android:build:general:windows

Signed closed-trial release

Use the existing workflow:

  • Workflow: Build signed closed-trial release
  • File: .github/workflows/android-closed-trial.yml
  • Runner: local
  • Product variant: general-audience

The release job requires the protected signing secrets, runs the audit and complete test path, synchronizes the General Audience web assets, builds the signed APK and AAB, verifies the minified LiteRT JNI contract, verifies the APK signature and writes SHA-256 checksums.

Artifacts are stored under C:\SteadyBuilds\release with the variant in their names, including:

Steady-1.0.0-alpha.19-signed-closed-trial-general-audience-latest.apk
Steady-1.0.0-alpha.19-signed-closed-trial-general-audience-latest.aab
Steady-1.0.0-alpha.19-signed-closed-trial-general-audience-latest-SHA256SUMS.txt

Validation boundary

The General Audience build removes the built-in Alcohol and Pornography/compulsive-sexual-behavior profiles, the SPAA section, Inventory, favorite texts and Twelve-Step resources. The build retains the generic change-tracking model, custom change areas, counters, analytics, Toolbox, badges and Companion. CI verifies that the program-resource feature markers are absent from the generated JavaScript bundle.

Both product variants currently use the same Android applicationId; installing one replaces the other while retaining compatible local data.

Workflow policy

Use these two established workflows first. A new workflow is justified only for a clearly distinct, durable build use case that neither existing workflow can represent. Document that gap before adding one.