Domenica, Giugno 13, 2010

E’ facile sviluppare software per Windows Mobile?

wm6.png Dopo anni di fedeltà ai sistemi forniti da Nokia, in particolare a Symbian, ultimamente ho fatto un radicale cambiamento, passando ad un sistema dotato di Windows Mobile!!!

Qualcuno potrà dire, ma come, il software libero? Perchè non Android?

Bene, in questo articolo, oltre a rispondere a queste domande, mostrerò come realizzare, in modo estremamente semplice, un piccolo programma per Windows Mobile.

Ascolta questo articolo : Se trovi troppo lunga ed impegnativa la lettura di questo articolo, puoi ascoltarlo! Ho letto per te questo testo ed ora è disponibile , diviso in 2 parti, direttamente su Youtube :

Sviluppare Applicazioni per Windows Mobile 6.x (1/2)

Sviluppare Applicazioni per Windows Mobile 6.x (2/2)

Sviluppare software per Smartphone

cat_win.png Da molto tempo ho il desiderio di tentare la strada dello sviluppo su smartphone.

Ho provato con Symbian ma, purtroppo, mi è sempre parso troppo ostico. Si può sviluppare con Java o C++. Purtroppo il primo non mi è mai piaciuto, il secondo ha il solito problema di C++, difficile da apprendere, complesso da utilizzare e da debuggare.

Ho poi cercato di documentarmi su altri sistemi, come quelli di Apple, RIM, ed infine Android.

Visto che sarebbe veramente troppo lungo descrivervi nel dettaglio la mia ricerca, cercherò di riassumere come meglio posso.

Scartato Symbian, che reputo troppo complesso, scarterò immediatamente anche il sistema di Apple (Iphone) a causa dell’evidente volontà di intrappolare nelle sue spire, utenti e sviluppatori, cosa che tutti gli altri attori del mercato cercano di fare, ma in modo molto meno rigido, lasciando comunque agli utilizzatori ampi margini di azione.

Per quanto riguarda i BlackBerry (RIM), nonostante li ritenga prodotti eccellenti, mi sembra un mondo un po troppo chiuso, tanto che gli operatori hanno tariffe esclusive per questi smartphone inoltre, cosa forse più importante, mancano modelli touch con tastiera fisica.

Dopo aver provato l’esperienza di una tastiera virtuale touch, credo che non acquisterò mai più uno smartphone senza una tastiera fisica.

Passiamo ora ad Android. Sistema veramente interessante ma, dopo aver guardato e provato l’SDK, con Java e C++ coadiuvati da Eclipse, mi sono parecchio demoralizzato.

Ciò che mi viene da dire è :

Tutto qui?

Insomma, mi aspettavo qualcosa di più. Nulla di particolarmente entusiasmante.

Come ultima piattaforma ho lasciato windows, in quanto ero quasi certo che mi avrebbe deluso. Al contrario mi ha sorpreso.

Mi ha sorpreso sia dal punto di vista delle funzionalità, sia da quello della programmazione. Pensavo che avesse carenze gravi, invece ho trovato tutto ciò che serve per poter lavorare, compreso un “Office Mobile 2010” completamente gratuito.

Comunque, ciò che mi ha più sorpreso è stato il modo di sviluppare software. Per capire meglio, l’ideale è leggere questo piccolo articolo che confronta il programma minimo sviluppabile sulle varie piattaforme :

Hello World: Windows Mobile vs Symbian vs Android vs Iphone

Come potete ben vedere il sistema utilizzato in Windows Mobile è C#, quindi .NET. Anche se non sono un fan di questo sistema certamente semplifica una quantità enorme di aspetti che, altrimenti, sarebbero a carico esclusivo del programmatore.

Lo Smartphone utilizzato

Dopo aver utilizzato con soddisfazione un Nokia e61i e un 5800, il mio attuale smartphone è un Samsung b7610 Omnia Pro dotato di Windows Mobile 6.5.

b7610.jpg

Il sistema di sviluppo e lo scopo del software

Per sviluppare il nostro primo, banale software, utilizzeremo il linguaggio C# e la versione 2.0 di .NET.

Nonostante sia possibile utilizzare versioni più recenti di .NET, su alcuni dispositivi questo implica l’installazione preventiva dell’apposito runtime. Ho quindi scelto la versione 2.0 in quanto il suo runtime è già preinstallato su tutti i dispositivi dotati della V.6 di Windows Mobile.

Ciò che andremo a realizzare è un semplicissimo software, dotato di un singolo bottone che, una volta premuto mostra la scritta :

“Hello World!”

L’interfaccia di questo software verrà disegnata in maniera visuale, il codice inserito utilizzando un comodo IDE. Infine, il programma, NON necessiterà di alcuna installazione, sarà sufficiente copiarlo sul dispositivo per renderlo immediatamente disponibile.

Cosa serve per sviluppare su Windows Mobile?

Prima di poter realizzare il nostro programma su Windows Mobile è necessario installare i runtime e l’ambiente di sviluppo.

Come già detto in precedenza lavoreremo con .Net V.2.0, il quale garantisce una
maggiore compatibilità e semplicità di distribuzione ed installazione.

Scarichiamo ed installiamo, sul nostro PC (dotato di Windows), nell’ordine :

2010-06-04-15-03-50.jpg
.Net Framework 3.5. Mi rendo conto che può sembrare strano ma, l’utilizzo di questa versione di .Net garantisce la possibilità di utilizzare SharpDevelop come IDE per lo sviluppo.

2010-06-04-15-07-11.jpg
PowerToys for .Net Compact Framework 3.5;

2010-06-04-15-07-40.jpg
.Net Compact Framework V.2;

2010-06-04-15-07-44.jpg
SharpDevelop;

Non serve altro per poter iniziare i nostri esperimenti.

2010-06-04-15-18-23.jpg
Nella pratica, i file da scaricare ed installare saranno :

  • dotnetfx35setup.exe;
  • netcfv35powertoys.msi;
  • netcfsetupv2.msi;
  • SharpDevelop_3.2.0.5777_Setup.msi.

Tutto ciò è utilizzabile su qualsiasi sistema Windows a partire dalla versione XP.

Come costruire un progetto per lo sviluppo su Windows Mobile?

Iniziamo.

2010-06-04-15-18-35.jpg
Completate le 4 installazioni, troveremo sul desktop l’icona di SharpDevelop. Clicchiamoci sopra, ed avviamo l’IDE.

2010-06-04-16-16-55.jpg
La prima schermata ci consentirà di costruire un nuovo progetto utilizzando il
tasto Nuova Soluzione.

2010-06-04-16-17-12.jpg
Una volta comparsa la maschera Nuovo Progetto, nella sezione C#->Compact Framework selezioniamo Applicazione Windows, inseriamo il nome del progetto (nel mio caso HelloWorld), infine premiamo Crea.

2010-06-04-17-08-19.jpg
Fatto ciò, ci troveremo all’interno del codice generato automaticamente da SharpDevelop.

2010-06-04-17-10-18.jpg
Saremo all’interno del codice relativo alla finestra principale della nostra nuova applicazione, MainForm. Per vedere come apparirà la nostra finestra utilizziamo la pagina, posta in basso, Disegna.

Saremo così di fronte alla nostra nuova finestra HelloWorld.

Bene. In teoria potremo subito eseguire una compilazione senza alcun problema. Purtroppo, cosi facendo, compileremo il nostro software per .Net Framework 3.5 e non per la versione 2.0, inoltre verrebbe generata un’applicazione standard e non specifica per la piattaforma Compact (utilizzata sui dispositivi mobili).

Per compilare utilizzando la modalità Compact Framework 2.0 è necessario intervenire sulle proprietà del progetto appena creato. Clicchiamo con il tasto destro su HelloWorld, nel pannello Progetti (a sinistra), quindi selezioniamo l’opzione Proprietà.

2010-06-04-17-10-47.jpg
Comparso il pannello di configurazione, apriamo la scheda Compilazione e come Framework di destinazione selezioniamo Compact Framework 2.0.

2010-06-04-17-17-32.jpg
Fatto ciò, salviamo e procediamo alla compilazione, utilizzando la voce Genera Soluzione, presente nel menu Genera.

Come potremo vedere (in basso), l’operazione è stata completata con successo. In questo momento abbiamo un programma con una semplice finestra, completamente vuota. Praticamente inutile per qualsiasi scopo.

Aggiungiamo ora qualcosa di più significativo. Andremo ad inserire un bottone che, quando cliccato, visualizzerà il messaggio Hello World!.

Procediamo.

2010-06-04-17-26-09.jpg
Posizioniamoci sul file MainForm.cs nella sezione Disegna, apriamo il pannello Strumenti (sulla sinistra), inseriamo un Button nella nostra dialog. Una volta aggiunto il bottone, questo verrà automaticamente chiamato Button1.

2010-06-04-17-31-25.jpg
Non ci rimane che fare doppio clic sul pulsante appena inserito, quindi digitare il codice che mostrerà il Nostro messaggio di saluto.

2010-06-04-17-31-49.jpg

Salviamo.

2010-06-04-17-37-37.jpg
Proviamo ora a compilare. Sorpresa! Abbiamo Errore!

Questo errore deriva dalla errata generazione automatica del codice relativo alla finestra (colpa di SharpDevelop). La soluzione è molto semplice, ci basterà commentare la linea 49 del file MainFormDesigne.cs. Per trovare tale linea basterà fare doppio clic sul messaggio di errore, in questo modo saremo posizionati esattamente sul codice incriminato.

2010-06-04-17-37-43.jpg
Non ci rimane che commentare la linea cattiva e ricompilare. Ecco fatto, Compilazione completata con successo.

2010-06-04-17-37-57.jpg
Per concludere la fase di sviluppo facciamo una prova avviando l’applicazione tramite un semplice clic sulla freccia verde posta nella barra degli strumenti.

2010-06-04-17-39-11.jpg
Come potremo constatare si aprirà la nostra finestra e, cliccando su Button1, potremo ammirare il nostro Hello World!.

2010-06-04-17-39-17.jpg

Come installare il nostro software sul dispositivo mobile(smartphone)?

Avendo sviluppato la nostra applicazione con .Net Framework V.2.0 non ci sarà alcuna installazione o verifica da fare prima di poterla utilizzare. Qualsiasi dispositivo dotato di Windows Mobile 6.X sarà in grado di eseguirla senza problemi.

Vediamo come fare.

Colleghiamo il nostro smartphone al PC e copiamo il file eseguibile HelloWorld.exe in una qualsiasi cartella del nostro dispositivo.

Scolleghiamo lo smartphone e, utilizzando il gestore file individuiamo l’eseguibile appena copiato, infine, eseguiamolo!

Ecco fatto! Provare per credere…

Troppo difficile?

wm6.png Naturalmente quanto mostrato è un microesempio utile soprattutto per comprendere il processo di sviluppo di base.

Lavorando su applicazioni più complesse ci si renderà conto che non sono tutte “rose e fiori” ma, spesso e volentieri, ci si scontrerà con problematiche molto complesse.

Tanto per fare alcuni esempi, lo sviluppo per smartphone richiede un attento uso della memoria al fine di minimizzare qualsiasi spreco (non abbiamo Gb di RAM a disposizione), inoltre una attenzione particolare va posta alle performance, in quanto gli attuali processori per dispositivi mobili non sono certo all’altezza dei cugini per PC.

Avendo a disposizione un .Net Framework di tipo Compact, alcune funzionalità non saranno consentite cosa che, alle volte, costringe ad implementazioni personali di funzioni non supportate.

Infine, bisognerà fare molta attenzione all’interfaccia utente. Come vedrete le risoluzioni utilizzate da Windows Mobile sono diverse e molto differenti tra loro, in molti casi non si può certo dire che lo spazio abbondi, inoltre a seconda del tipo di dispositivo (touch o meno) sarà utile disegnare l’interfaccia per l’utilizzo con le dita o tramite i tasti di un tastierino fisico.

Insomma, per fare le cose per bene è necessaria, come al solito, molta attenzione, uno studio costante e l’esperienza che, nel tempo, si accumulerà.

Buon divertimento a tutti!

  1. Luca

    Mercoledì, Ottobre 17, 2012 - 16:48:52

    Ciao ottima guida però ricevo questo errore:
    The “AddHighDPIResource” task failed unexpectedly.
    System.ArgumentNullException: Il valore non può essere null.
    Nome parametro: path1
    in System.IO.Path.Combine(String path1, String path2)
    in Microsoft.CompactFramework.Build.Tasks.Utilities.GetFrameworkSdkBinPathForBinary(String binary)
    in Microsoft.CompactFramework.Build.Tasks.AddHighDPIResource.Execute()
    in Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult) (MSB4018)
    Sono su Windows 7 e ho lanciato l’IDE con privilegi amministrativi, cosa può essere

  2. Luca

    Mercoledì, Ottobre 17, 2012 - 17:16:56

    Sono sempre io ho risolto aggiungendo la seguente stringa nel file .csproj “<HighDPIResAware>1</HighDPIResAware>” La stringa dev’essere aggiunta nel primo propety group. It WORKS!

Aggiungi un commento

Completa la form sottostante per aggiungere un commento

Dati utente





Aggiungi il tuo commento