This document describes the steps to prepare and publish a new release of Yarrand, including APK generation, signing, renaming, and GitHub release management.
- Make sure you have installed:
- JDK 17+
- Android SDK
- Gradle
- gh CLI for managing GitHub releases
adb(Android Debug Bridge) for device testing
The keystore is used to sign the release APK cryptographically. It's stored in keystore.jks in the project root.
Important: The keystore and its passwords should be kept secure and not committed to version control.
Default keystore passwords (used in Makefile):
- Keystore password:
password - Key password:
password
To override these, set environment variables before building:
export KEYSTORE_PASSWORD="your_keystore_password"
export KEY_PASSWORD="your_key_password"- Edit
app/build.gradle.ktsand updateversionNameandversionCodeas needed. - Update any relevant documentation.
Use the Makefile to build, sign, and prepare the APKs:
make clean
make release-rename # Builds, signs, and renames the release APK to yarrand-vX.Y.Z.apk
make debug-rename # (Optional) Builds and renames the debug APK to yarrand-vX.Y.Z-debug.apkThe release APK is automatically signed using the keystore configuration in app/build.gradle.kts.
To quickly test the release APK on a connected Android device:
make install-release # Builds, signs, and installs the release APK
make install-debug # (Optional) Builds and installs the debug APKgit tag -a vX.Y.Z -m "Release vX.Y.Z: <summary of changes>"
git push --tags- Prepare the release notes using git log:
git log v<PREVIOUS_VERSION>..HEAD --oneline --no-merges > release-notes.md- Review the previous release notes in GitHub for formatting and style consistency. IMPORTANT: The release notes are focused on user-facing changes and improvements, not internal implementation details.
- Review and edit
release-notes.mdas needed as explained above. - Upload the renamed release APK:
gh release create vX.Y.Z yarrand-vX.Y.Z.apk --title "Yarrand vX.Y.Z" --notes-file release-notes.md- If the release already exists and you want to update the APK:
gh release upload vX.Y.Z yarrand-vX.Y.Z.apk --clobber- Check that the GitHub release has the correct APK and complete notes
- Perform final tests on a real device with the APK from the GitHub release download
- Version updated in Gradle and docs
- README reviewed
- Release APK built and signed
- Tested on real device (via
make install-release) - Tag created and pushed
- Release notes generated from git log
- Release created/updated on GitHub with APK and notes
- APK tested by downloading from GitHub release
This process ensures consistent, reproducible, and cryptographically signed releases that are easy to install for users and collaborators.