- GitHub
- GitHub Actions
- Flutter
- Android
Avec GitHub, vous avez la possibilité de configurer rapidement votre intégration continue en utilisant GitHub Actions pour builder régulièrement votre application pour votre projet et la distribuer à vos utilisateurs.
Pour atteindre votre objectif, vous devez suivre ces étapes:
Android App BundlekeystorePour pouvoir suivre ce tutoriel, vous devez avoir accès à votre fichier keystore avec les mots de passe associés.
Avec cela prêt, commençons!
L’idée est d’automatiser le processus des généréation des packages à l’aide des GitHub Actions, ce processus est appelé l’intégration continue.
Lorsque vous utilisez des GitHub Actions, l’intérêt est que:
Nous allons créer quelque chose appelé un workflow qui vous permettra de générer votre Android App Bundle en un seul clic.
Créons notre premier workflow!
Dans votre projet, vous devez créer un dossier workflows dans le dossier .github, puis créer un nouveau fichier appelé: android-release.yml par exemple. Ce fichier contiendra notre premier job appelé build_android:
name: Flutter_Android
on:
push:
branches: [main]
jobs:
build_android:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
Ce job sera déclenché lorsque vous pousserez de nouvelles modifications sur la branche main. La première step que nous utiliserons est celle pour récupérer le code de notre branche.
Pour builder notre application Flutter Android, nous devons utiliser une action fournie par défaut appelée: actions/setup-java@v1 qui ajoutera tous les outils nécessaires pour la compilation Java.
- name: Setup Java to compile Android project
uses: actions/setup-java@v1
with:
java-version: '12.x'
Ensuite, pour utiliser Flutter dans notre workflow, nous devons l’installer, grâce à une action de la communauté:
- name: Install and set Flutter version
uses: subosito/flutter-action@v1.4.0
with:
flutter-version: '2.0.1'
Pour accéder à votre certificat keystore pour votre application, vous devez utiliser quelque chose qui s’appelle les secrets. Cela vous permet de stocker ces fichiers critiques en toute sécurité. Si vous n’avez jamais utilisé de secrets auparavant, consultez cet article précédent.
Définissons-en pour:
keystore appelé KEYSTORE_BASE64keystore: KEYSTORE_PASSWORDKEYSTORE_PASSWORD_ALIASAvec la configuration de nos secrets faite, nous pouvons récupérer le fichier keystore dans notre workflow comme ceci:
- name: Create the Keystore
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
run: |
# import keystore from secrets
echo $KEYSTORE_BASE64 | base64 -d > $RUNNER_TEMP/my_production.keystore
Nous devons restaurer les packages de notre application pour pouvoir compiler l’application Flutter:
- name: Restore packages
run: flutter pub get
Il est temps de builder l’application Flutter Android en mode release sans la signer et de générer notre premier Android App Bundle:
- name: Build Android App Bundle
run: flutter build appbundle --release
Si vous essayez de signer directement votre application, vous obtiendrez une erreur indiquant que vous essayez de signer un package qui est déjà signé. Pourquoi ?
La réponse se trouve dans le fichier build.gradle dans le dossier app du dossier de la plate-forme Android. Par défaut, vous avez quelque chose comme ceci:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
Comme vous pouvez le voir ci-dessus, la configuration de signature est définie sur debug afin que votre application soit automatiquement signée avec un certificat de debug. Pour résoudre ce problème, la valeur par défaut signingConfig doit être non spécifiée comme ceci:
buildTypes {
release {
signingConfig null
}
}
Avec cet ajustement, nous pouvons maintenant utiliser jarsigner pour signer notre package Android App Bundle:
- name: Sign Android App Bundle
run: jarsigner -keystore $RUNNER_TEMP/my_production.keystore -storepass ${{ secrets.KEYSTORE_PASSWORD }} -keypass ${{ secrets.KEYSTORE_PASSWORD_ALIAS }} -sigalg SHA256withRSA -digestalg SHA-256 -signedjar build/app/outputs/bundle/release/app-release-signed.aab build/app/outputs/bundle/release/*.aab YOUR_PRODUCTION_ALIAS
Pour accéder à l’Android App Bundle générée précédemment, ajoutons cette action finale:
- name: Publish Android Artefacts
uses: actions/upload-artifact@v1
with:
name: release-aab-signed
path: build/app/outputs/bundle/release/app-release-signed.aab
Cela publiera votre Android App Bundle qui sera automatiquement mis dans un Zip téléchargeable. Ensuite, vous pouvez le télécharger et le distribuer à vos utilisateurs.

Vous êtes maintenant prêt à partager votre application avec vos utilisateurs! Vous trouverez un exemple de code sur ce répertoire Github.