Releasing
A release is a signed APK on GitHub releases, plus its checksum. Installed copies of VueGram find it there and update themselves.
The release key
Releases are signed with VueGram's release key, which lives outside the repository in ~/.vuegram/:
vuegram-release.jks, the keystoresigning.properties, withstoreFile,storePassword,keyAliasandkeyPassword
(scripts/release.sh reads ~/.vuegram/signing.properties, or the file the VUEGRAM_SIGNING environment variable names.)
Back up ~/.vuegram somewhere safe
Android only installs an update signed with the same key as the installed app. Without this key, no installed copy of VueGram could be updated: everyone would have to uninstall VueGram (and log in again) to get a new version.
The certificate's SHA-256 is:
1cf5e1fccd8f64863b507c2b8c03d7f1f15d6c2785c11c4ad4d9b699eb152152Never commit the release key, signing.properties or anything from dist/.
Make a release
Raise
appVersioninapp/build.gradle.ktsand commit.versionCodefollows it:1.2.3is10203(each part must be below 100).Run
scripts/release.sh. It:- refuses to run with uncommitted changes, or if the tag already exists;
- builds and tests the release (
testReleaseUnitTest assembleRelease); - refuses the APK if it is not signed with the certificate above (the app would refuse it too);
- writes
dist/vuegram-<version>.apkanddist/vuegram-<version>.apk.sha256; - tags
v<version>.
Publish it. Push the tag and create a GitHub release with both files:
shscripts/release.sh --publishdoes that with the
ghcommand-line tool. To do it by hand:git push origin v<version>, then on GitHub create a release from that tag titled "VueGram <version>", attach both files, write what changed, and publish it as the latest release (not a pre-release or draft).
What the app expects
The app's update check reads the latest release and needs:
- an
.apkasset, and - its
.apk.sha256next to it.
Without the checksum file, the app refuses the update. It also refuses an APK signed with any other key.