Skip to Content
FlutterLezione 6 Pubblicazione Nei Market6.2 Pubblicazione su Android (Play Store)

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 in keystore/ (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

  1. Account sviluppatore: registra un account su https://play.google.com/console ($25 una tantum).
  2. Crea app:
  • Nome, lingua, categoria (app/gioco), prezzo (gratis / a pagamento).
  1. 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.
  1. Distribuzione:
  • Track internal (test interni rapidi).
  • Track closed testing (gruppi di tester via email/gruppi Play).
  • Track open testing (link pubblico).
  • Produzione: versione pubblica.
  1. Assets: carica icone (512×512), screenshot, video promozionali, banner.
  2. Carica .aab: aggiungi il file generato alla release.
  3. Note di rilascio: descrivi cambiamenti, bug fix, nuove feature.
  4. 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

ProblemaSoluzione
App non firmataVerifica key.properties e Gradle signingConfig
Crash all’avvioTesta su dispositivo fisico o track internal
Icona non aggiornataControlla flutter_launcher_icons e cartelle assets
Descrizione rifiutataRivedi privacy policy, Data Safety e giustificazione permessi
Errore 403 uploadControlla 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.