Lezione 16: Build APK, test e presentazione
Obiettivi
Section titled “Obiettivi”- Compilare l’app in APK per Android
- Testare l’app su dispositivo reale
- Preparare la presentazione del progetto
- Presentare alla classe
1. Cos’è un APK?
Section titled “1. Cos’è un APK?”APK (Android Package Kit) è il formato di file per installare app su Android. È come un .exe per Windows o un .dmg per macOS.
main.py (codice Python) │ ▼flet build apk ← comando magico │ ▼MiaApp.apk ← file da installare sul telefonoPer buildare l’APK, Flet usa Buildozer che automaticamente:
- Scarica JDK 17 e Android SDK (se non presenti)
- Compila il codice Python in un’app Android
- Genera il file
.apk
2. Prerequisiti per la build
Section titled “2. Prerequisiti per la build”Cosa serve
Section titled “Cosa serve”fletinstallato (pip install flet)- Connessione internet (per scaricare JDK e SDK)
- Android SDK (scaricato automaticamente da
flet build apkse assente) - JDK 17 (scaricato automaticamente se assente)
- Circa 15-30 minuti per la prima build (le successive sono più veloci)
Verifica ambiente
Section titled “Verifica ambiente”Prima di buildare, verifica che Flet sia aggiornato:
pip install --upgrade flet3. Comandi per la build
Section titled “3. Comandi per la build”Build APK base
Section titled “Build APK base”# Nella cartella del progetto (dove c'è main.py)flet build apkQuesto genera un file APK nella cartella build/apk/.
Build APK con nome personalizzato
Section titled “Build APK con nome personalizzato”flet build apk --project "MiaApp" --company "Scuola"Build APK per architettura specifica
Section titled “Build APK per architettura specifica”# Per dispositivi moderni (arm64)flet build apk --target-platform android-arm64
# Per tutti i dispositiviflet build apk --target-platform android-arm64,android-armBuild Android App Bundle (AAB) per Google Play
Section titled “Build Android App Bundle (AAB) per Google Play”flet build aab4. Cosa fare durante la build
Section titled “4. Cosa fare durante la build”La build può richiedere tempo. Mentre aspetti:
Prima build (~15-30 minuti)
Section titled “Prima build (~15-30 minuti)”1. Download JDK 17...2. Download Android SDK...3. Configurazione ambiente...4. Compilazione Python → Android...5. Generazione APK...✅ APK creato in build/apk/Build successive (~5-10 minuti)
Section titled “Build successive (~5-10 minuti)”Solo la prima è lenta perché scarica JDK e SDK. Le successive sono molto più veloci.
5. Installare l’APK sul telefono
Section titled “5. Installare l’APK sul telefono”Metodo 1: Trasferimento via cavo USB
Section titled “Metodo 1: Trasferimento via cavo USB”- Collega il telefono al PC con cavo USB
- Copia il file APK dalla cartella
build/apk/al telefono - Sul telefono, apri il file APK (potrebbe chiedere di abilitare “Installa da origini sconosciute”)
- Installa
Metodo 2: Condivisione via cloud/email
Section titled “Metodo 2: Condivisione via cloud/email”- Carica l’APK su Google Drive, Dropbox, o invialo via email
- Sul telefono, scarica il file e aprilo per installare
Metodo 3: ADB (se hai Android Studio)
Section titled “Metodo 3: ADB (se hai Android Studio)”adb install build/apk/MiaApp.apk6. Test su dispositivo
Section titled “6. Test su dispositivo”Checklist di test
Section titled “Checklist di test”Prima della presentazione, testa queste cose:
- L’app si avvia senza crash
- Tutti i bottoni funzionano
- La navigazione è fluida
- I dati caricati all’avvio sono corretti
- Aggiungere/modificare/eliminare elementi funziona
- Dopo aver chiuso e riaperto l’app, i dati sono ancora lì
- Non ci sono errori in console
Bug comuni e soluzioni
Section titled “Bug comuni e soluzioni”| Problema | Soluzione |
|---|---|
| L’app si blocca all’avvio | Controlla carica_dati() — file JSON danneggiato? |
| I dati non si salvano | Controlla il percorso del file e i permessi di scrittura |
| L’immagine non si vede | Usa percorso assoluto o copia l’immagine nella cartella del progetto |
| Bottone non fa nulla | Controlla che on_click punti alla funzione giusta |
nonlocal error | Assicurati che la variabile sia definita nella funzione esterna |
7. Preparare la presentazione
Section titled “7. Preparare la presentazione”Struttura della presentazione (5-10 minuti)
Section titled “Struttura della presentazione (5-10 minuti)”1. TITOLO (30 sec) Nome app, nome tuo, classe
2. PROBLEMA (1 min) Che problema risolve la tua app? Perché l'hai scelta?
3. DEMO LIVE (3-5 min) ← Parte più importante! Apri l'app sul telefono/emulatore Mostra le funzionalità principali Fai vedere che i dati persistono
4. CODICE (1-2 min) Mostra una parte interessante del codice Spiega una sfida che hai superato
5. CONCLUSIONE (30 sec) Cosa hai imparato? Cosa miglioreresti?Slide consigliate
Section titled “Slide consigliate”| Slide | Contenuto |
|---|---|
| 1 | Titolo, nome, classe, foto app |
| 2 | Descrizione: cosa fa l’app? |
| 3 | Schermate (screenshot dell’app) |
| 4 | Dettaglio tecnico: JSON, API, componenti usati |
| 5 | Sfide incontrate e soluzioni |
| 6 | Ringraziamenti |
Demo live: preparazione
Section titled “Demo live: preparazione”- Apri l’app PRIMA di iniziare la presentazione (così è già pronta)
- Prepara i dati di esempio (non presentare con lista vuota!)
- Prova la demo 2-3 volte prima della presentazione
- Se usi API, scarica i dati prima (in caso di internet lento)
- Piano B: se la demo fallisce, mostra screenshot
8. Criteri di valutazione
Section titled “8. Criteri di valutazione”| Criterio | Peso | Descrizione |
|---|---|---|
| Funzionalità | 30% | L’app fa ciò che doveva fare? |
| Persistenza | 15% | I dati si salvano e caricano? |
| UI/UX | 20% | Layout pulito, colori, feedback |
| Codice | 15% | Codice organizzato, leggibile, commentato |
| Presentazione | 20% | Demo funzionante, chiarezza, completezza |
9. Riepilogo del corso
Section titled “9. Riepilogo del corso”Cosa abbiamo imparato in 16 lezioni
Section titled “Cosa abbiamo imparato in 16 lezioni”| Lezione | Argomento |
|---|---|
| 1 | Intro Flet, Hello World |
| 2 | Componenti base |
| 3 | Layout (Row, Column, Container) |
| 4 | Eventi e stato |
| 5 | Form e liste |
| 6 | Navigazione |
| 7 | Tabs e Drawer |
| 8 | Tema e immagini |
| 9 | Dati locali JSON |
| 10 | API HTTP |
| 11 | App Meteo (esercitazione) |
| 12 | Dialoghi e form avanzati |
| 13 | FilePicker e timer |
| 14-15 | Progetto |
| 16 | Build e presentazione |
Competenze acquisite
Section titled “Competenze acquisite”- ✅ Programmazione GUI con Flet
- ✅ Componenti UI e layout
- ✅ Eventi e interattività
- ✅ Navigazione multi-screen
- ✅ Persistenza dati JSON
- ✅ API HTTP e dati esterni
- ✅ Build e deploy Android
- ✅ Gestione progetto completo
10. Esercizio finale
Section titled “10. Esercizio finale”🎯 Consegna: progetto completo + presentazione
Section titled “🎯 Consegna: progetto completo + presentazione”Cosa consegnare:
- Codice: cartella del progetto con
main.pyedati.json - APK: file
.apkgenerato - Presentazione: slide o README.md
- Wireframe: foto del progetto originale su carta (per mostrare l’evoluzione)
Buona presentazione a tutti! 🚀