signingConfigs.create() was running unconditionally, casting null
properties to String before the buildTypes guard could take effect.
CI has no key.properties so the cast threw. Now falls back to debug
signing when the keystore file is absent.
- Configure release signing via key.properties + Gradle Kotlin DSL
- Add INTERNET and ACCESS_NETWORK_STATE permissions to AndroidManifest
(Flutter injects INTERNET automatically in debug builds but not release,
causing DNS failures in sideloaded APKs)
- Restore android/.gitignore entries lost during signing setup
- Gitignore key.properties and fabled-release-key.jks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Gradle applicationVariants hook renames the output from app-release.apk
to e.g. Fabled-26.03.01.1.apk. The correctly named file is produced at
build/app/outputs/apk/release/ and should be used for Forgejo releases.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>