Freeteo


Pensieri e C#dice di Matteo Raumer

Sempre al lavoro...anche con Monodroid

E' da un bel po' di tempo che non posto qualcosa sul blog, ed il motivo è presto detto: oberato di lavoro 

In particolare negli ultimi mesi sono stato impegnato oltre che come sempre su asp.net /win32 e wpf, su un bel progetto per Android.
Chiaramente sono queste le richieste del mercato, dato che il trend dei device Smartphone e Tablet sono in costante ascesa per la piattaforma Google, inutile aggiungere che Microsoft è in ritardo.
Ma come io sostengo da anni, anche quando si parlava di Java e .net, la mia sensazione è che Microsoft arrivi in ritardo su parecchie cose per vari motivi che non sto qui a spiegare, ma il fatto di arrivare un po' in ritardo spesso le permette di "arrivare meglio".
Per questo stiamo a vedere cosa succede con l'arrivo dell'attesissimo Windows 8, se veramente è quello che mi sembra di aver visto, un ottimo prodotto.

Ma torniamo all'argomento principale del post, il progetto Android.
La richiesta del mercato ultimamente è spesso per questa piattaforma, ed anche io mi sono cimentato al porting di un progetto precedentemente sviluppato in WPF, niente di che a livello grafico, ma cmq fatto con il Framework 4.0 e con una serie di funzionalità che ho cercato di portare in questa piattaforma per device.

Come sempre si vede ingiro cosa è possibile fare, e dato che a quanto pare Silverlight non è supportato da Android ne tantomeno da iOs (quindi iPad ed iPhone) l'unico modo per poter portare il codice, ma soprattutto le conoscenze, rimane Monodroid della Xamarin.
Un ottimo prodotto, dopo averlo usato posso veramente dire che è stato la manna dal cielo, per questa mia situazione.


Monodroid per chi non lo conoscesse ancora, è un pacchetto che si installa e permette di scrivere codice C# (se non erro, dall'ultima versione anche in vb.net) che poi viene compilato ed eseguito su un device Android, quindi tablet o smartphone.
Sempre per chi non li conoscesse ancora, c'è anche il suo "duale" ossia Monotouch, che permette di scrivere C# per iOs.

Ma vediamo qualche dettaglio "operativo", su come ho potuto portare il codice in questa piattaforma, 

Partiamo subito chiarendo che il porting "totale" non c'è , soprattutto per le parti grafiche (ad esempio proprio il markup di WPF, gli eventi di binding etc...) ma il codice a livello base è quasi totalmente supportato, Linq e Lambda Expression compresi.

Quindi possiamo partire dall'assunto che lo strato UI è da rifare, e finchè non ci sarà un editor grafico discreto (come quello che ha Eclipse) si va di markup, e test nell'emulatore o nel device fisico. (* per quest'ultima opzione bisogna acquistare la licenza, non basta il demo)

Come dicevo però il codice C# puro è praticamente funzionante totalmente, con tanto di namespace etc...tant'è che non ho fatto un "copia-incolla", mi sono addirittura linkato i file del progetto WPF direttamente nel progetto (una comodità eccezionale):


così facendo i file rimangono esattamente gli stessi, e a meno di avere i namespace corretti, tutto compila e funziona a meraviglia.
* Chiaramente attenzione perchè con il doppio-click si apre il file orginale, quindi se si va a modificare si modificano i file di un altro progetto, attenzione anche nel debug.

Con questa mossa astuta, gran parte dei miei layer applicativi sono stati integrati direttamente nel progetto Monodroid, senza toccare nulla.
* Come si vede dall immagine il tutto [ stato sviluppato dentro a Visual Studio, ma la stessa cosa vale anche se si usa MonoDevelop.

L'applicazione chiaramente ha una tutta la parte di layout delle maschere da riscrivere, e le difficoltà ci sono eccome:

- usare il markup e provare ogni volta per essere sicuri che funzioni, dato che non c'è il designer WYSIWYG:


- l'equivalente di una maschera è l'Activity ed ogni parte di Layout ha biosgno di un bel po' di codice dove si vanno a prendere i controlli del markup e castati nel tipo corrispondente:


Fare a codice tutte queste cose che Visual Studio fa da sempre per noi nel designer, a volte è frustrante...

- gli eventi non sono linkati con il doppio-click dentro al designer
- alcune cose di markup hanno bisogno di impostazioni di layout obbligatorie (a meno di non usare gli style)
- capire come gestisce le Resources Android, soprattutto per le traduzioni
- a volte l'intellisense dentro al Markup non funziona

Sinceramente la fatica si deve fare comunque, anche se avere già di questi vantaggi è sicuramente incoraggiante per lo sviluppo di applicazioni C# in ambienti Android...
e per chi si cimentasse in questi sviluppi, puo' condividere la propria esperienza nel forum di dotnethell...


Categoria: .net
mercoledì, 14 mar 2012 Ore. 18.21





  • Views Home Page: 248.914
  • Views Posts: 427.687
  • Views Gallerie: 604.200
  • n° Posts: 163
  • n° Commenti: 148
Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003