Archivi categoria: Android

Birthday Manager: sei anni di polvere spazzati via in una notte!

Premessa

Birthday Manager è con me dal 2010. Ha visto nascere e morire il tema Holo, l’importazione dei compleanni da Facebook, quella da Google+ (pace all’anima loro)… e poi più nulla. L’ultimo aggiornamento risale a febbraio 2020: sei anni di silenzio!

Non per mancanza di voglia, sia chiaro, ma per mancanza della cosa più preziosa che abbiamo: il tempo. Ogni tanto aprivo il progetto con le migliori intenzioni, guardavo la lista delle cose da sistemare e lo richiudevo subito. Perché un’app ferma per sei anni non resta ferma… invecchia! E nel frattempo:

  • Gradle e l’Android Gradle Plugin erano cambiati così tanto che il progetto non compilava nemmeno più;
  • Google Play continuava a chiedere un targetSdk sempre più alto, con nuove regole su notifiche, allarmi ed edge-to-edge;
  • le librerie di Play Billing e AdMob che usavo erano ormai deprecate;
  • nel codice c’erano ancora i resti di Facebook, Google+ e perfino del vecchio client Apache HTTP.

Insomma, il classico debito tecnico: settimane di lavoro solo per tornare al punto di partenza. Settimane che, semplicemente, non avevo.

L’idea!

Qualche sera fa mi sono detto: ma se tutti parlano di Intelligenza Artificiale applicata allo sviluppo, perché non provarla sul serio su un progetto mio? Ho aperto il repository con Claude Code (l’assistente di programmazione di Anthropic che lavora direttamente sul codice dal terminale) e gli ho affidato il lavoro sporco.

E non parlo di un autocompletamento un po’ più furbo. Funziona come lavorare in coppia con un collega velocissimo e che non si stanca mai:

  • io decido cosa fare e in che ordine (“porta tutto a Gradle 9, poi aggiorna le librerie, poi passiamo ad Android 17”);
  • l’IA legge il codice, modifica, compila, legge gli errori, corregge e ricompila;
  • io provo l’app sull’emulatore e sul telefono, guardo le modifiche e dico cosa non mi convince;
  • commit e si passa al punto successivo.

Gli ho perfino insegnato le mie fisse: git-flow, come numero le versioni, come scrivo il changelog… e da lì in poi le ha rispettate da solo!

La nottata

Abbiamo iniziato la sera e siamo andati avanti in un’unica tirata fino alle 4 di notte. In poche ore sono passati: migrazione a Gradle 9.8, aggiornamento di tutte le librerie, addio a Facebook e Google+, Play Billing e AdMob nuovi, targetSdk 37 con permesso per le notifiche e allarmi esatti, consenso GDPR per la pubblicità, nuova privacy policy, nuova grafica per la lista e il dettaglio dei contatti, nuova icona e nuova schermata Pro. Alle 04:27 l’ultimo commit… e poi finalmente a letto!

Nei giorni successivi solo rifiniture: un paio di crash scovati provando la versione release sul telefono vero, le traduzioni completate, gli screenshot per il Play Store in cinque lingue e, già nella 5.1, il supporto ai tablet e la traduzione ucraina. Abbiamo anche scovato un bug vecchio di anni: in russo chi compiva 21 anni risultava avere “un anno”!

Il risultato? 253 file modificati e Birthday Manager 5.0 pubblicata sul Play Store il 9 ottobre, a soli tre giorni dall’inizio dei lavori. Sei anni di debito tecnico saldati in una notte (o quasi).

Il pensiero filosofico

I miei primi cicli li ho scritti in BASIC sul Commodore 64 e il mio primo vero programma in Pascal, quando Java ancora non esisteva e l’unico “Stack Overflow” a disposizione era il manuale. Da allora ne ho viste passare tante: Internet, Java, i JAR scaricati a mano, Maven, Gradle, Stack Overflow, GitHub… ogni volta il mestiere è cambiato un po’. Questa volta però è diverso: il collo di bottiglia non è più scrivere il codice, ma sapere cosa vuoi ottenere!

Non ho smesso di fare lo sviluppatore, ho smesso di fare il dattilografo. Decido, controllo, provo… e quando serve dico “no, così non va”. La responsabilità resta mia, e i due crash trovati solo sul telefono vero me lo hanno ricordato subito.

Per un progetto personale come Birthday Manager questo fa tutta la differenza del mondo: il problema non è mai stato non saper fare le cose, ma non avere il tempo per farle. E chissà quanti altri progetti chiusi nei cassetti potrebbero rinascere allo stesso modo…

SPOILER

E visto che parliamo di come è cambiato il modo di lavorare… anche questo articolo non l’ho scritto io! O meglio, non come lo avrei scritto una volta.

L’ho chiesto a Claude, nella stessa sessione in cui lavoriamo sul codice: gli ho dato l’idea, i punti da toccare e il finale. Lui si è letto la storia del repository e il changelog, ha ricostruito la nottata dagli orari dei commit e, per non tradirmi, si è letto anche i miei vecchi articoli per copiare il mio modo di scrivere. Io ho riletto, sistemato qualcosa e pubblicato.

Lo stesso metodo usato per il codice: io decido e controllo, l’IA scrive. E a quanto pare funziona anche per il blog!

Birthday Manager 5 vi aspetta sul Google Play Store… e per segnalazioni e suggerimenti c’è il nuovo forum di supporto!

Appunti su Android

Introduzione

Quante volte vi capita di entrare in una stanza e, improvvisamente, vi dimenticate il motivo per cui siete entrati? Bene, gli scienziati hanno codificato questo strano effetto battezzandolo con il nome di Doorway effetc: l’effetto della porta d’ingresso.

Ecco, a me non serve passare da una porta d’ingresso per dimenticare qualcosa, ci riesco con molta più facilità! Per questo motivo spesso mi capita di prendere degli appunti in modo da mitigare questo effetto.

Voglio condividere con tutti voi i miei appunti sul Sistema Android, dalla struttura di sistema fino ai comandi di base, spero possa esservi utile!

Partizioni

La struttura di un hard disk android è cambiata molto nel tempo, ma queste partizioni, ovviamente simil-linux, sono rimaste abbastanza inalterate:

  • misc – Partizione “miscellaneous”, letteralmente partizione di dati di tipo “Varie”, qualsiasi tipo di dato che non rientra nella competenza delle altre partizioni;
  • recovery – Partizione di boot nel caso in cui avviamo il dispositivo in Recovery Mode;
  • boot – Classica partizione di boot di un sistema linux;
  • system – Partizione di sistema, tecnicamente qui ci stanno tutti i dati della ROM installata;
  • cache – Partizione di cache;
  • userdata – Partizione con tutti i dati dell’utente (comprese le applicazioni non di sistema installate).

Filesystem

Il filesystem di un sistema android è molto simile a quello linux, non mi dilungo quindi nel spiegare la tutta la struttura ma resto focalizzato soltanto nelle differenze che particolarizzano un sistema andorid:

  • /system/app – Applicazioni di sistema che non è possibile disinstallare
  • /data/app – Applicazioni installate
  • /data/data/<package> – Dati dell’applicazione

Comandi adb

L’Android Debug Bridge (ADB) è il comando per la gestione di un dispositivo android collegato via USB ad un PC.

Di seguito un elenco dei comandi più comuni:

  • abd devices – Visualizza tutti i dispositivi correttamente connessi al PC;
  • adb reboot – Riavvia il dispositivo;
  • adb reboot bootloader – Riavvia il dispositivo in  modalità bootloader (la schermata bianca con i tre android sullo skateboard);
  • adb reboot recovery – Riavvia il dispositivo in modalità Recovery;
  • adb shell – Avvia una shell del sistema (terminale linux);
  • adb remount – Monta nuovamente la partizione system in modalità read/write;
  • adb logcat – visualizza il log di sistema;
  • adb install <apk> – installa una applicazione;
  • adb push – copia file nel device;
  • adb uninstall <apk> – rimuove una applicazione.

Comandi fastboot

Fastboot è il comando per effettuare il flash del filesystem di un dispositivo android collegato via USB ad un PC. Per utilizzare questo tool il dispositivo deve essere avviato visualizzando il bootloader e selezionando Fastboot.

Di seguito un elenco dei principali comandi:

  • fastboot devices – Visualizza tutti i dispositivi correttamente connessi al PC;
  • fastboot reboot – Riavvia il dispositivo;
  • fastboot erase <partizione> – Cancella i dati dalla partizione selezionata. Questo comando può essere usato per ripulire il device;
  • fastboot flash <partizione> <file.img> – Effettua il flash della partizione con il file specificato;
  • fastboot boot <file.img> – Avvia il sistema utilizzando come partizione di boot il file specificato ma senza effettuare il flash.

Glossario

  • Nandroid – Backup di tutto il sistema effettuabile avviando il dispositivo in Recovery Mode. Questa operazione crea una copia esatta del stato del dispositivo. Paragonabile ad operazioni di Ghost sul PC. In poche parole crea un file img per ogni partizione android di sistema.
  • SPL o Second Program Loader – Parte di codice che si occupa dell’avvio del terminale, tecnicamente è paragonabile al BIOS di un normale PC. Questo controlla se durante l’avvio sono stati premuti tasti particolari (proprio come il bios) ed, in base a particolari combinazioni di tasti, decide se far partire il sistema tramite la partizione di boot (opzione di default) o se avviare il Recovery Mode o il bootloader. Questa, essendo eseguita quasi immediatamente durante l’operazione di boot, è una delle aree più delicate del sistema: se il flash di questa parte (ovvero sovrascriverla o aggiornarla con una SPL personalizzata) non va a buon fine, le probabilità di aver trasformato il vostro dispositivo in un mattoncino è elevatissima (Brick del sispositivo). SPL può essere rilasciato in due modalità Security-On e Security-Off (S-ON e S-OFF).
  • Brick – Se qualcosa va male, ma veramente male, il telefono diventa un mattoncino (Brick, appunto). In poche parole avete “rotto” il cellulare e non potete più ripararlo. Solo un centro assistenza autorizzato può ripristinarlo. Esistono solo poche (e rischiose operazioni) che portano il dispositivo in Brick: errore durante il root del cellulare; errore durante l’aggiornamento dell’SPL; flashare una radio non compatibile con SPL.
  • Recovery Mode – Particolare partizione del dispositivo avviabile durante il boot. Permette operazioni come l’hard wipe (cancellazione di tutti le impostazioni dalla partizione data) o effettuare aggiornamenti tramite file update.zip. In caso di Recovery modificate (tramite processo di root del dispositivo) è possibile effettuare anche l’operazione di nandroid backup o flash.

Birthday Manager v3.0

Birthday Manager

In questi giorni ho rilasciato la versione 3.0 di Birthday Manager, la mia applicazione Android per tenere sotto controllo i compleanni dei contatti memorizzati sul cellulare. Ho un poco trascurato lo sviluppo di questa applicazione, sarà perché sono stato preso da altri progetti, sarà che alla fine ho sempre voluto lasciare questa applicazione molto semplice e pulita.

L’avvento delle nuove api Jelly Bean però ha creato parecchio interesse e la voglia di provarle era veramente tanta… se a questa sommiamo l’esigenza della mia Promessa di recuperare i compleanni anche da Facebook (e quindi una nuova sfida di programmazione), l’upgrade di Birthday Manager doveva essere fatto!

Ed ecco pronta quindi la versione 3.0 con tante novità:

  • Tema Holo, come vuole mamma Google;
  • Importazione dei contatti da Facebook;
  • Versione pro in modo da poter eliminare i banner pubblicitari;
  • Nuovissima gestione della ActionBar;
  • Donazione utilizzando le librerie di PayPal.

Ancora sono tanti i punti da migliorare, mi arrivano richieste sulla possibilità di nascondere alcuni contatti importati da Facebook, la possibilità di inserire allarmi personalizzati per i contatti, la possibilità di invio facilitato dei messaggi di auguri (tramite sms, email o chiamata) e tanto ma veramente tanto altro.

Insomma, è una applicazione in continua crescita che anche se ha abbandonato la politica open source con la quale è nata (sfortunatamente gli utenti invece di collaborare al progetto si limitavano a copiarlo e rivenderlo), continua ad avere uno spirito di community tutto aperto: sono i vostri consigli che la portano avanti.

Quindi grazie a tutti per il supporto e continuate pure a consigliarmi!

InfoOperatore

InfoOperatore

Dalla grande esperienza di InfoCosti Tre, è con grande soddisfazione che vi presento InfoOperatore!

InfoOperatore è una utility per tenere traccia in modo semplice ed automatico dell’operatore di un numero di un vostro contatto!

Controlla se un numero appartiene o meno alla rete TIM o H3G con ben tre modalità di check: inserendo manualmente un numero, selezionando il numero di un contatto dalla rubrica o selezionando tutti i numeri di un contatto. Il modo più semplice per capire se puoi usare o meno opzioni legate ad un operatore specifico!

Download dall’Android Market.

InfoCosti Tre arriva a 100.000 download!

InfoCosti Tre

E’ passato poco più di un anno dalla prima release dell’applicazione e oggi mi sono accorto che è stata superata la soglia dei 100.000 download! Sono proprio felice e devo ringraziare tutti voi per questo stupendo risultato!

Se non sai di cosa stiamo parlando, InfoCosti Tre è una utility Android per controllare tutto quello che gira attorno all’operatore H3G: InfoCosti, E’ un tre? e Grande Cinema 3! Puoi scaricarla direttamente dall’Android Market.

Per festeggiare degnamente sia questo stupendo risultato sia il Natale ho deciso di fare un piccolo regalino a tutti voi: mettere in premio 5 versioni Pro dell’applicazione!

Partecipare al concorso è semplicissimo:

    • Premi il tasto di uno o più Social Network tra quelli presenti alla fine di questo articolo (Tweet, Google+, Facebook o LinkedIn);
    • Inserisci un commento in questo articolo indicando nel testo l’account usato per effettuare lo share (max un post per ogni Social Network);
    • Sperare di essere estratto!

    L’estrazione dei cinque account avverrà giorno 08/01/2012 e i vincitori avranno diritto alla versione Pro di InfoCosti Tre per tutto il  2012!!!La versione Pro verrà attivata sull’indirizzo email indicato sul commento.

    Grazie a tutti per aver partecipato al raggiungimento di questo traguardo.