mirror of https://github.com/ospab/ostp.git
Published APKs could never be updated over - users hit "App not installed" or "unable to parse the package" and had to uninstall first. The cause was not the version code (verified: local.properties carries flutter.versionCode=23 and gha.ps1 bumps pubspec's build number every release, so it increments correctly). It was the signing key: app/build.gradle.kts still had the stock Flutter template TODO and pointed the release build type at signingConfigs["debug"]. Android identifies an app by applicationId + signing key and refuses to update across a key change, and the debug keystore is generated per machine - on ephemeral CI runners that means every single published build was signed with a different random key. Release builds now take their key from android/key.properties or the OSTP_KEYSTORE_* environment variables, falling back to debug (with a loud warning) only so local `flutter build apk --release` keeps working. CI materialises the keystore from repository secrets, refuses to build at all if the secret is absent, and re-verifies the finished APK is not debug-signed rather than ever shipping an un-updatable build again. NOTE: existing installs are signed with a now-unreproducible random key, so users must uninstall once more for THIS release. Every update after it works. |
||
|---|---|---|
| .. | ||
| android | ||
| assets | ||
| lib | ||
| test | ||
| .gitignore | ||
| .metadata | ||
| README.md | ||
| analysis_options.yaml | ||
| android_icon.png | ||
| android_icon_backup.png | ||
| build.ps1 | ||
| build_android_jni.ps1 | ||
| devtools_options.yaml | ||
| ostp-client-release.apk | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| resize_icon.ps1 | ||
README.md
ostp_client
A new Flutter project.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.