Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 1.25 KB

File metadata and controls

52 lines (37 loc) · 1.25 KB

Release guide

Unsigned CI artifacts

GitHub Actions builds app-release-unsigned.apk. These are for smoke testing only.

Signed release APK / AAB (local)

  1. Create a keystore (once):
keytool -genkey -v \
  -keystore and-code-release.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias and-code
  1. Add to ~/.gradle/gradle.properties (do not commit):
ANDROID_CODE_STORE_FILE=/absolute/path/and-code-release.jks
ANDROID_CODE_STORE_PASSWORD=...
ANDROID_CODE_KEY_ALIAS=and-code
ANDROID_CODE_KEY_PASSWORD=...
  1. Optional: wire signingConfigs in app/build.gradle.kts reading those properties, then:
./gradlew assembleRelease
# or
./gradlew bundleRelease
  1. Verify:
apksigner verify --print-certs app/build/outputs/apk/release/app-release.apk

Versioning

  • versionName / versionCode live in app/build.gradle.kts
  • Tag releases as vX.Y.Z matching versionName
  • Update CHANGELOG.md (or GitHub Release notes) with user-facing changes

Pre-release checklist

  • ./gradlew testDebugUnitTest lintDebug assembleRelease
  • Manual smoke: local install, chat, permission approve/reject, remote connect
  • THIRD_PARTY_NOTICES.md still accurate
  • No secrets in git history