Pubblicazione su Android (Play Store)
Obiettivo
Imparare a pubblicare un’app Flutter su Google Play Store, dal build firmato al deploy sulla console.
1. Firma dell’app
1.1 Genera la chiave
keytool -genkey -v \
-keystore keystore/key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 3650 \
-alias app-release-key
- Sposta
key.jks
inkeystore/
(non tracciata) e aggiungila a.gitignore
.
1.2 Gestione credenziali in CI/CD
Piuttosto che commettere key.properties
, generalo in CI con segreti:
- name: Setup Release Keystore Properties
run: |
echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" >> key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> key.properties
echo "keyAlias=app-release-key" >> key.properties
echo "storeFile=keystore/key.jks" >> key.properties
1.3 Configura Gradle
def propsFile = rootProject.file('key.properties')
def props = new Properties()
if (propsFile.exists()) props.load(new FileInputStream(propsFile))
android {
signingConfigs {
release {
storeFile file(props['storeFile'])
storePassword props['storePassword']
keyAlias props['keyAlias']
keyPassword props['keyPassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
shrinkResources false
}
}
}
2. Creazione del .aab
flutter build appbundle \
--target-platform android-arm,android-arm64,android-x64 \
--build-name=1.0.0 --build-number=100
Risultato: build/app/outputs/bundle/release/app-release.aab
.
3. Google Play Console
- Account sviluppatore: registra un account su https://play.google.com/console ($25 una tantum).
- Crea app:
- Nome, lingua, categoria (app/gioco), prezzo (gratis / a pagamento).
- Contenuti dell’app:
- Data Safety: configura tipi di dati raccolti e uso (analytics, crash, pubblicità).
- Privacy Policy: inserisci URL pubblico.
- Content Rating: compila il questionario per ottenere la classificazione (PEGI, ESRB, etc.).
- Target Audience & Content: dichiara fascia d’età e contenuti sensibili.
- Distribuzione:
- Track internal (test interni rapidi).
- Track closed testing (gruppi di tester via email/gruppi Play).
- Track open testing (link pubblico).
- Produzione: versione pubblica.
- Assets: carica icone (512×512), screenshot, video promozionali, banner.
- Carica
.aab
: aggiungi il file generato alla release. - Note di rilascio: descrivi cambiamenti, bug fix, nuove feature.
- Invia per revisione e monitora lo stato di pubblicazione.
💡
Tip
Assicurati di rispettare le policy di distribuzione per ciascuna track e di non inviare build incomplete su track di produzione.
4. Debug comuni
Problema | Soluzione |
---|---|
App non firmata | Verifica key.properties e Gradle signingConfig |
Crash all’avvio | Testa su dispositivo fisico o track internal |
Icona non aggiornata | Controlla flutter_launcher_icons e cartelle assets |
Descrizione rifiutata | Rivedi privacy policy, Data Safety e giustificazione permessi |
Errore 403 upload | Controlla credenziali e permessi API in GCP |
5. Beta Testing & Feedback
- Firebase App Distribution: gestisci tester, versioni e feedback.
- Integrazione track: collega Play Console a Slack/email per notifiche.
- Monitoraggio: utilizza Crashlytics e Analytics per raccogliere dati in anteprima.