PixelPlayerOSS releases are shipped from main after the release candidate passes local checks and a basic device smoke test.
Version values live in gradle.properties:
APP_VERSION_NAME=0.1.0
APP_VERSION_CODE=1For every public release:
- Update
APP_VERSION_NAME. - Increment
APP_VERSION_CODE. - Move the relevant
CHANGELOG.mdentries fromUnreleasedto the release version. - Tag the release as
v<APP_VERSION_NAME>, for examplev0.1.0.
Run these before tagging:
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew :app:compileDebugKotlin
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew :app:lintDebug
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew :app:testDebugUnitTest
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew :app:assembleRelease -Ppixelplayer.enableAbiSplits=false -Ppixelplayer.disableReleaseSigning=trueFor split APK artifacts, use:
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew :app:assembleRelease -Ppixelplayer.enableAbiSplits=trueRelease signing is driven by an untracked keystore.properties file at the repository root.
Supported keys:
storeFile=/absolute/or/repo-relative/path/to/release.jks
storePassword=...
keyAlias=...
keyPassword=...storeFile is optional when the release keystore is available as vz-pixelplay.jks at the repository root. storePassword, keyAlias, and keyPassword are required for signing. If signing properties or the keystore file are missing, release builds are unsigned. CI workflows create temporary CI signing keys for artifacts; those are not official release keys.
For F-Droid-compatible unsigned verification builds, pass -Ppixelplayer.disableReleaseSigning=true even when local signing files exist.
Install the release candidate and verify:
- First launch and setup complete.
- Local library scan finds music.
- Playback starts, pauses, resumes, skips, and survives backgrounding.
- Full player opens and closes smoothly.
- Widget controls still reach the playback service.
- Navidrome and Jellyfin login screens open.
- Backup export flow creates a file.
- Ensure
mainis clean and pushed. - Create a tag:
git tag v<APP_VERSION_NAME>. - Push the tag:
git push origin v<APP_VERSION_NAME>. - Create a GitHub release from the tag.
- Attach APK artifacts and paste the changelog section.
Before submitting a tagged release to F-Droid-compatible app stores:
- Update
fastlane/metadata/android/en-US/changelogs/<versionCode>.txt. - Verify the unsigned universal release build from FDROID.md.
- Check
PRIVACY.mdstill matches the optional network services present in the app. - Create source archives from git, not from the working tree, so ignored local artifacts are excluded.