Updating an App
-
Bump
version, the sourcetag/rev, and the fetchhashin the app’spackage.nix(get the new hash withnix flake prefetch github:<owner>/<repo>/<tag>). -
Update
meta.androidif upstream changed minSdk/targetSdk/versionCode — the values live in the app’sgradle.properties,gradle/libs.versions.toml, orapp/build.gradle.kts. -
Regenerate the app’s verification metadata (see Adding a New App) and merge it into the central lockfile:
python3 lib/tools/merge-verification-metadata.py <app>/gradle/verification-metadata.xml -
nix build .#<app>.tests.meta— builds the apk and verifies its manifest againstmeta.android.
Hash conflicts in the lockfile
The merge tool refuses to change a hash that is already locked:
HASH CONFLICT com.github.tibbi:reprint (reprint-2cb206415d.jar)
locked: 0c6de154...
new: 201f65fa...
A published Maven artifact must never change bytes. A conflict means the
upstream repository rebuilt or replaced the artifact — JitPack does this
routinely, Maven Central and Google should never. Inspect before accepting
(--force keeps the new hash). Treat a conflict on a Central/Google
artifact as a potential supply-chain incident, not an inconvenience.