Air quality measures gathering multi-platform application.
cd apolline-flutter
flutter pub get
dart scripts/configuration_generation.dart # see backend endpoint configuration section below
flutter run
Before running the application, you MUST generate endpoint configuration by running:
dart scripts/configuration_generation.dart
Then, you can set variables in the apolline-flutter/assets/config_dev.json
file.
On develop
push, CI will build an APK and try to push it as beta release on the Play Store.
Before merging a branch on develop
, make sure:
- release notes have been updated
- application version has been increased (minor/patch)
If you want to make a public release on Play Store, you must mark a previously-uploaded beta release as ready for production in the Play console (https://play.google.com/console).
- Create a keystore with an upload key (https://flutter.dev/docs/deployment/android#create-an-upload-keystore);
- Move the keystore file as
android/app/upload-keystore.jks
; - Create
android/key.properties
file as such:
storeFile=upload-keystore.jks
storePassword=$KEYSTORE_STORE_PASSWORD
keyAlias=$KEYSTORE_KEY_ALIAS
keyPassword=$KEYSTORE_KEY_PASSWORD
- Build the application with
flutter build apk
orflutter build appbundle
.
To make the CI build the application bundle and sign it, we need to upload it to GitHub as a secret.
- Encode the store with base64:
gpg -c --armor release.keystore
; - Upload both
release.keystore.asc
and associated password as GitHub secrets; - Use them as such in your CI workflow:
# Create store file from secret
echo "${{ secrets.UPLOAD_KEYSTORE }}" > upload.keystore.asc
# Decode store with encode key (the one you prompted with gpg -c)
gpg -d --passphrase "${{ secrets.UPLOAD_KEYSTORE_PASSPHRASE }}" --batch upload.keystore.asc > app/upload-keystore.jks
A Medium article describing the procedure can be found here: https://stefma.medium.com/how-to-store-a-android-keystore-safely-on-github-actions-f0cef9413784
- LOA sensor.
- BARRY Issagha
- GDISSA Ramy
- RADI Lina
- VIDOR Remi