Archivi autore: gerdavax

Sulla frammentazione Android

Molti l’avevano previsto, alcuni hanno fatto finta di non vederla, Google l’ha negata con tutte le sue forze, ma alla fine e’ arrivata: la frammentazione della piattaforma Android.

Lasciando perdere la prima release e la versione 1.1 (ormai abbandonata in tutto il mondo, tranne che sugli HTC Dream venduti da TIM), la giostra delle versioni vede il succedersi della Cupcake (1.5), Donut (1.6), Eclair (2.0, 2.0.1 e 2.1) e Froyo (2.2). La 1.5 rappresenta un netto miglioramento di prestazioni rispetto alla 1.1 ed ha introdotto gli App Widget. La 1.6 ha visto il supporto a risoluzioni diverse dalla 320×480. La 2.0 ha introdotto multitouch, Bluetooth e tante cosette belline, facendo la sua comparsa sul Motorola Droid/Milestone e ricevendo una toppa al volo con la 2.0.1. Arriva poi il Nexus One, che porta in dote la 2.1, che tra le altre novita’ ha portato i Live Wallpaper. Finche’ si arriva al maggio di quest’anno, con la 2.2 per ora disponibile ufficialmente solo per il Nexus One.

Il primo problema e’ arrivato con il passaggio dalla 1.5 alla 1.6: la gestione delle risorse, infatti, ha richiesto il suffisso -v4 per fare in modo che il runtime 1.5 non si “perdesse” tra le risorse organizzate per diverse risoluzioni dello schermo. Dalla 1.6 alla 2.x sono arrivate tante nuove API, alcune hanno semplicemente cambiato package (di veda il caso Telephony). E anche dalla 2.0/2.1 alla 2.2 sono cambiate diverse cose, tant’e’ che il team di Google ha dovuto pubblicare ben tre articoli sul blog dedicato agli sviluppatori per salvaguardare portabilita’ e compatibilita’:

Backward Compatibility for Applications
http://developer.android.com/intl/zh-TW/resources/articles/backward-compatibility.html

Android Compatibility
http://developer.android.com/intl/zh-TW/guide/practices/compatibility.html

On Android Compatibility
http://android-developers.blogspot.com/2010/05/on-android-compatibility.html

Anche loro si sono trovati nella condizione di scrivere un’applicazione d’esempio che funzionava solo sulla 2.2:

“Several weeks ago we took a look at how to handle multitouch on Android 2.0 (Eclair) and above, and by the end we had a simple demo app. That app uses features exclusive to Android 2.2 (Froyo) which as of this writing hasn’t had a chance to reach many devices yet.”

How to have your (Cup)cake and eat it too
http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html

Personalmente sono giunto a questa conclusione: non potendo trascurare la base installata di terminali 1.5/1.6 (alcuni dei quali sono ancora in vendita, vedi il LinkMe o il Magic, e non saranno mai aggiornati ad una 2.x) ma volendo allo stesso tempo guardare al futuro, puo’ avere senso fare DUE versioni diverse della stessa applicazione, una per Android 1.x e una per Android 2.x, avendo cura poi, su ciascuna build, di gestire le differenze intrinseche di ciascun subset (dunque la differenza tra 1.5 e 1.6 e tra le varie 2.x). E’ senz’altro uno sforzo considerevole, ma sarebbe comunque inutile avere uno spaghetti code che tenga conto di tutte le differenze, delle eccezioni di questa o quell’altra piattaforma. Questo e’ ancora piu’ vero quando si usano API particolari, come quella per il Bluetooth (ufficiale su Android 2.x, disponibile come progetto indipendente per Android 1.x). Non ultimo, i device 2.x hanno una maggiore quantita’ di memoria per singolo processo (solitamente 24MB al posto dei soliti 16MB) e dunque si possono usare strategie diverse nella gestione della memoria. A tendere, la versione 1.x sfumera’, mentre quella 2.x potra’ essere consolidata per far spazio alle nuove feature della piattaforma. Non dimentichiamo, infatti, che Gingerbread (3.0) e’ dietro l’angolo.

Poiche’ Android distingue le applicazioni in base al package name, ho deciso di lavorare in questo modo:

– la versione per Android 1.x ha package del tipo

com.qualcosa.qualcosaltro.NOME_APPLICAZIONE.android1

e nel Manifest e’ presente una dichiarazione che vincola SDK minimo e massimo:

<uses-sdk android:minSdkVersion=”3″ android:maxSdkVersion=”4″/>

– la versione per Android 2.x ha package del tipo:

com.qualcosa.qualcosaltro.NOME_APPLICAZIONE

(oppure com.qualcosa.qualcosaltro.NOME_APPLICAZIONE.android2)

e nel Manifest e’ presente una dichiarazione che vincola SDK minimo e imposta il target alla versione piu’ recente:

<uses-sdk android:minSdkVersion=”5″ android:targetSdkVersion=”8″/>

Probabilmente non e’ la soluzione migliore per tutti i progetti, sicuramente altri sviluppatori avranno elaborato strategie piu’ efficaci e che non comportano la gestione di due progetti separati. A me semplifica la vita perche’ mi consente di isolare i due mondi Android, eventualmente decidendo che una feature per una versione non e’ disponibile sull’altra, specie se lo sforzo del porting e’ eccessivo.

Samsung Corby Smartphone GT-I5500: Android very entry level!

Ho avuto il piacere di provare in anteprima il nuovissimo Samsung Corby GT-i5500, smartphone equipaggiato con Android 2.1 recentemente annunciato nel nostro Paese (ne parlano, ad esempio, quelli di Androidiani http://www.androidiani.com/news/samsung-annuncia-il-corby-i5500-comunicato-stampa-11082). Si tratta del primo terminale con prezzo ufficiale inferiore ai 200 euro e ci sono buone possibilita’ che in breve tempo lo street price scenda ulteriormente.

Si tratta ovviamente di un terminale molto entry-level, ma a parte la risoluzione dello schermo (QVGA, 256×320, impossibile pretendere di piu’ in questa fascia di prezzo) e’ davvero notevole. Molto veloce, molto stabile, ottima sensibilita’ dello schermo. Samsung ha inserito alcune applicazioni extra, oltre alla normale dotazione dei terminali Android; la customizzazione piu’ interessante, pero’, e’ quella della notification bar: on top, prima delle notifiche, appaiono 4 pulsanti per controllo WiFi, Bluetooth, Vibrazione e Suoneria.

Come hanno gia’ detto in tanti, il vero successo di Android potrebbe arrivare proprio da questi terminali entry level (combattere iPhone 4 con i terminali attuali mi sembra una battaglia persa).

Ovviamente non poteva mancare un test con la Divina Commedia:

Focaccia Saracena

Una sera che volete provare un piatto unico (come sapore e come… organizzazione del pasto, ovvero con un’unica pietanza), vi consiglio di recarvi al ristorante O’Professore (Via Fiume Giallo 80/100, Roma Eur Torrino) e di ordinare la Focaccia Saracena (per una o due persone). Si tratta di una focaccia fatta con l’ottima pasta per pizza del ristorante e farcita con carne di tutti i tipi (diverse salsicce, manzo, maiale, pollo), insalata, pomodoro e patate fritte. Un trionfo.. Consiglio di non prendere antipasto: per finire la focaccia ci vuole un appetito intonso.

Non aggiungo altro, lascio la parola alle foto.

In attesa della diffusione di Froyo…

… Eclair guadagna terreno, ma Cupcake e Donut continuano ad occupare oltre il 50% del mercato dei terminali Android. Non dimentichiamo, infatti, che sono ancora in commercio terminali 1.5 e 1.6 (ad esempio, il Samsung Galaxy e l’LG LinkMe) che non saranno aggiornati alla 2.x.

WHYMCA: pensieri a valle di una bella giornata

Scrivo queste note mentre sono in treno, di ritorno da WHYMCA 2010 (ma le ho completate a casa, con latte caldo e biscotti al cioccolato!).

Devo confessarlo: inizialmente ero in dubbio se presentare una proposta per questa conferenza, visto che avevo gia’ partecipato a Better Software questo mese (ogni tanto bisogna darsi un limite!). Poi, visto l’entusiasmo contagioso di Alfredo Morresi, ho realizzato che WHYMCA si stava configurando con un evento di quelli ai quali non bisogna mancare.

E ora che e’ finito mi dico: meno male che son venuto! 🙂

E’ stata una giornata estramamente interessante ed e’ stato bello passare ascoltare tanti talk interessanti e potersi confrontare con persone molto esperte e motivate. Come un Java Day, ma ovviamente non solo Java (c’era iPhone, c’era Flash…), ma tanto tanto mobile. Avrei voluto seguire piu’ talk, ma non e’ stato possibile: tra strette di mano con vecchi amici, cordialita’ con le nuove conoscenze e approfondimenti sul mio talk il tempo e’ davvero volato via! In particolare, avrei voluto seguire gli interventi su Flash, magari partecipando alla lunga sessione del caro Andrea Trento che non vedevo dal meeting JMDF di Bologna (non mi ricordo neppure che anno fosse!). Sono sicuro che non manchera’ occasione se, come credo, WHYMCA10 ha innescato un meccanismo virtuoso i cui frutti non tarderanno ad arrivare.

Con mia grande sorpresa, ho scoperto che tra i “mobilist” c’e’ tanto interesse per Bluetooth e per l’interfacciamento a sensori, e tante domande sono arrivate anche su QuadraSpace. Cosi’, dopo il talk, ho avuto il piacere di fare una piccola sessione demo con Android e Arduino incollati con il Bluetooth e mostrare un piccolo prototipo ad una piccola ma vivace platea. E fare questa presentazione pratica e informale mi ha fatto venire voglia di proporre, per la prossima conferenza, uno speech BREVE (magari mezzora) e una sessione di DEMO a parte un po’ piu’ LUNGA (diciamo un’ora). Ma se ne parla piu’ avanti, magari dopo un anno sabbatico…

Torniamo a WHYMCA. E’ stato un bell’evento, senza dubbio. Perfettibile, come ogni iniziativa che cresce rapidamente. E rispetto alla moltitudine di aspetti positivi, qualche neo (ad esempio, sono rimasto senza pizza!!!) passa decisamente in secondo piano. Merito di tutto questo va al team che ha organizzato tutto, curando tanti aspetti complessi. Io credo che l’intera comunita’ italiana degli sviluppatori mobile debba esprimere una energico e corale GRAZIE a questi ragazzi (Alfredo Morresi, Riccardo Bosio, Andrea Piovani e Paolo Sinelli), che hanno avviato qualcosa di cui c’era bisogno. Eventi come WHYMCA, fatti dagli sviluppatori per gli sviluppatori, sono una preziosissima occasione per imparare cose nuove, scambiare esperienze, fare nuove conoscenze, trovare spazi per nuove collaborazioni. E malgrado i presuntuosi ritengano che eventi del genere non servono a niente, “che tanto tutto cio’ che mi serve si trova in rete”, perdono la parte piu’ importante di questo mestiere che non e’ la mera risoluzione del singolo problema applicativo, ma piuttosto la crescita complessiva (per la fettina che gli spetta) della nostra economia e della nostra cultura, che si basa sulle relazioni e sulla creazione di un sistema. Perche’ dove non c’e’ scambio concredo non c’e’ cultura e non c’e’ economia. Sembrano cose banali e scontate, ma proprio perche’ le si considera tali, vengono sempre trascurate e mortificate.

Ora credo che sia utile meditare su un periodo sabbatico, in cui mandare avanti i progetti e lasciando nella polvere Keynote… A proposito: quelle che seguono sono le slide del talk di venerdi’.

Froyo e Android Market: interessanti novita’

Ho appena installato Android 2.2 “Froyo” (Frozen Yogurt) sul Nexus One e devo ammettere che la prima impressione e’ ottima. Il telefono e’ molto veloce e alcuni cambiamenti rendono decisamente piu’ piacevole l’utilizzo di questo sistema.

Si sentono molti pareri positivi su Android 2.2, forse quelli piu’ felici sono gli amanti di Flash. Il supporto su Froyo e’ ben fatto, ma siamo ancora lontani dalla perfezione. Ad esempio, eseguendo un’applicazione pesantuccia (la pagina dei premi del programma Vodafone One… ho provato quella perche’ spesso manda KO anche il PC!) il plug-in ha comportamenti strani. Ad ogni modo, si tratta ancora di una beta.

Cio’ che mi ha colpito di piu’ sono le modifiche all’Android Market e alla gestione delle applicazioni. Prima di tutto, e’ finalmente possibile installare le applicazioni sulla SD card, liberando prezioso spazio sul dispositivo. Tipiche applicazioni da installare sulla SD sono i giochi oppure gli e-book. Ho provveduto ad aggiornare la Divina Commedia, cosi’ da liberare quasi 2MB dalla memoria del sistema di coloro che vorranno installare l’applicazione sul Nexus One appena aggiornato.

Ecco come si presenta il nuovo Android Market sul telefono:

Come si vede, ora i commenti sono in tab separato, mentre le statistiche di voto e download non sono piu’ sul titolo.

Android 2.2 introduce la possibilita’ di avere l’aggiornamento automatico delle applicazioni. Peccato che nella localizzazione italiana l’opzione di autoaggiornamento abbia qualche problema di layout:

Nel pannello di configurazione delle applicazioni, ora e’ possibile vedere le applicazioni scaricate, quelle in esecuzione, tutte quelle installate sul sistema e quelle presenti nella SD.

Interessante constatare che la Divina Commedia, installata sulla SD card, occupa sul terminale poche decine di K: questa e’ un’ottima cosa!

Il pannello di gestione della singola applicazione consente poi di spostare avanti e indietro alla e dalla card SD:

Infine, un grande apprezzamento per il pannello di gestione delle applicazioni sul sito developer dell’Android Market: finalmente e’ possibile conoscere i crash avvenuti sui terminali degli utenti, con lo stack trace. Questo e’ grandioso! Siamo lontani dal contesto ideale, visto che non e’ possibile conoscere il nome del terminale in uso, ma e’ gia’ un primo passo. Qui sotto, ad esempio, si vedono i report di alcune NullPointerException avvenuti sull’applicazione Bluetooth Samples:

e il dettaglio su una di queste:

Aspetti giuridici degli application store

Vorrei segnalarvi questa interessante presentazione che Elvira Berlingieri ha tenuto a Better Software 2010 (purtroppo a quell’ora c’era il mio talk e non ho avuto la possibilita’ di seguirlo personalmente…. attendo il video!):

Divina Commedia in crescita su App Store

Ad inizio di quest’anno ho presentato le statistiche dei download della Divina Commedia per iPhone e Android; la settimana scorsa ho presentato e commentato quei risultati (insieme ad altri, ovviamente!) a Better Software 2010 (trovate le slide su slideshare).

Durante il weekend ho ripreso i report dell’App Store relativi ai primi mesi del 2010, per confrontarli con l’andamento dello scorso anno. Ho lasciato fuori le statistiche Android, dato che il cumulativo Android 2009-2010 e’ inferiore ad un singolo mese iPhone. Magari lo introdurro’ nuovamente a fine anno.

Il grafico qui sotto e’ eloquente: 15% in piu’ a gennaio, 126% in piu’ a febbraio, 132% in piu’ a marzo, mentre ad aprile c’e’ stato un calo del 17% (significativo in senso assoluto, ma essendo riferito all’aprile 2009, che fu un mese eccezionale, puo’ essere considerato modesto); mediamente l’incremento e’ del 64%.