mercoledì, gennaio 23, 2008

Ecco il team di Android


Questa è una presentazione di Android fatta dal suo Team di Sviluppo, sembrano seri ma io mi chiedo saranno stati veramente loro?


Powered by ScribeFire.

martedì, gennaio 22, 2008

Applicazione in C per Android

Tutti sappiamo che l'SDK di Android lavora con Java, ma se volessimo eseguire servizi o programmi scritti in C? Ognuno di noi e pronto a sbarellare le proprie conoscenze di C quado ne abbiamo la possibilità, visto che è la prima cosa che si impara in genere, sappiamo che è una cosa possibile analizzando il framework di sviluppo allora perche non farlo? Non è cosi difficile quindi proviamoci. Grosso modo quello che dobbiamo fare è compilare le nostre applicazioni con un compilatore Linux Standard di tipo cross-platform, spostare l'applicazione nel device o emulatore che sia ed eseguire l'applicazione da shell.

Abbiamo bisogno del compilatore, il semplice gcc non va bene, ne troviamo uno che fà al caso nostro proprio qui (fate attenzione a scegliere quello per ARM GNU/Linux). Quindi possiamo procedere alla creazione, compilazione e caricamento dei nostri programmi:

// compiliamo il file
$ arm-none-linux-gnueabi-gcc -static hello.c -o hello
// carichiamo il file sul device
$ adb push hello/hello data/hello

Ora basta solo eseguire la nostra applicazione:

$ adb shell data/hello

Hello, Android!

Sicuramente non sarà molto ma per i nostri scopi và più che bene. Questo ci fà rendere conto delle potenzialità della piattaforma che abbiamo in mano lasciandoci la libertà di provare quello che ci va.

Nota: Attenzione al parametro -static in fase di compilazione (vedi documentazione)!



Powered by ScribeFire.

Quali tool di sviluppo abbiamo?

Una volta scaricato l'Android SDK ci accorgiamo che al suo interno vi sono varie cartelle , tra queste c'è una cartella di nome /tools. All'interno di della cartella dei tool troviamo alcuni strumenti che ci vengono forniti per facilitarci la vita nello sviluppo delle applicazioni. Il piu importante strumento che viene fornito è l'emulatore di Android per poter testare le applicazioni, non mancano strumenti per il debugging, la pacchettizzazione (packaging), e l'installazione delle vostre applicazioni sull'emulatore. Di seguito una lista di questi tool e una breve spiegazione di cosa fanno:

Emulatore Android
Una periferica mobile virtuale (un telefonino virtuale per capirci) che gira sul tuo computer. Puoi usare l'emulatore per progettare, "debuggare", e testare le tue applicazioni su di una piattaforma Android funzionante.

Android Development Tools Plugin per Eclipse.
Il plugin ADT aggiunge delle funzionalità all'ambiente di sviluppo Eclipse, rendendo la creazione ed il debugging delle vostre applicazioni facile e veloce. Se usi Eclipse, il plugin ADT di dà una marcia in più nello sviluppo delle applicazioni:

  • Vi dà la possibbilità di accedere agli strumenti di sviluppo di Android direttamente dall'interno dell'IDE di Eclipse. Ad esempio, possiamo accedere alle tante funzionalità dello strumento DDMS — prendere screenshot, gestire il port-forwarding, impostare breakpoints, e vedere informazioni sui thread e sui processi — direttamente da Eclipse.
  • Fornisce un Wizard per la creazione di un nuovo progetto, che vi aiuta a creare ed impostare velocemente tutti i file di base di cui avete bisogno per una nuova applicazione per Android.
  • Automatizza e semplifica il processo di costruzione delle vostre applicazioni.
  • Fornisce un editor che vi aiuta a scrivere XML valido per i vostri manifest e file di risorse.
Per maggiori info sul plugin ADT, incluso le istruzioni per l'installazione, vedi Installing the ADT Plugin for Eclipse in inglese naturalmente oppure guarda nei miei post. Per un esempio di utilizzo completo di screenshots, vedi Hello Android.

Dalvik Debug Monitor Service (ddms)
Integrato con Dalvik, la Virtual Machine propria della piattaforma Android, questo tool vi permette di gestire i processi su un emulatore o periferica reale e vi aiuta nella fase di debugging. Puoi usarlo per uccidere i processi, selezionare uno specifico processo da debuggare, generare data trace, vedere l'heap e le info sui thread, prendere screenshots dell'emulatore o del device, e molto altro.

Android Debug Bridge (adb)
Il tool adb vi permette di installare i vostri file delle applicazioni .apk su di un emulatore o device dandovi accesso agli stessi tramite la linea di comando (una shell in pratica). Puoi anche utilizzarlo per collegare un debugger standard al codice delle applicazioni che girano in quel momento su un emulatore o device.

Android Asset Packaging Tool (aapt)
Il tool aapt vi permette di creare il file .apk contenente i binari e le risorse dell'applicazione stessa.

Android Interface Description Language (aidl)
Vi permette di generare codice per interfacciare più processi, come i servizi che sono in uso.

sqlite3
Includrlo è stata una convenienza, questo strumento vi permette di accedere ai dati SQLite creati ed usati dalle applicazioni Android.

Traceview
Questo strumento produce un'analisi grafica dei data trace log generati dalle vostre applicazioni.
mksdcard
Vi aiuta a creare un'immagine del disco da poter utilizzare con l'emulatore, per simulare la presenza di una unità di memoria esterna (come una SD card ad esempio).

dx
Lo strumento dx riscrive il bytecode dei file .class in bytecode per Android (salvati in file .dex )

activityCreator
Uno script che genera Ant build file che possono essere utilizzati per compilare le vostre applicazioni per Android. Se state sviluppando su Eclipse con il plugin ADT non avete bisogno di usare questo script.


Powered by ScribeFire.

giovedì, gennaio 17, 2008

Istallare ADT plugin in Eclipse

Se avete deciso di adottare Eclipse come ambiente di sviluppo per Android potete installare un plugin chiamato Android Development Tools (ADT da questo momento) che aggiunge un supporto integrato ai tools e alla creazione di progetti per la piattaforma Android. Questo plugin include molte estensioni per la crerazione, l'esecuzione ed il debugging rendendo lo sviluppo facile e veloce. Per scaricare ed installare ADT bisogna impostare in Eclipse un sito per gli aggiornamenti da cui scaricare il plugin, vediamo come:


  1. Avviate Eclipse,quindi selezionate Help > Software Updates > Find and Install....

  2. Nella finestra che appare selezionate Search for new features to install e premete Next.

  3. Premete New Remote Site.

  4. Nella finestra di dialogo, inserite un nome per il sito (es. Android Plugin o ADT_Repo) ed inserite questo URL:
    https://dl-ssl.google.com/android/eclipse/

    Premete OK.

  5. Ora dovreste vedere che il sito appena inserito è stato aggiunto e spuntato. Premete Finish.

  6. Nella finestra dei risultati di ricerca successiva, spuntate la casella per Android Plugin > Eclipse Integration > Android Development Tools e premete Next.

  7. Leggete i termini di licenza e quindi cliccate Accept terms of the license agreement, sempre se li accettate e non ci sia nulla in contrario. Poi premete Next.

  8. Premete Finish.

  9. Il plugin ADT non è firmato; potete accettare l'installazione comunque premendo Install All.

  10. Riavviate Eclipse.

  11. Dopo il riavvio aggiornate le vostre preferenze di Eclipse facendole puntare alla cartella dell'SDK in questo modo:


    1. Selezionate Window > Preferences... per aprire il pannello delle preferenze (Preferences). (in Mac OS X: Eclipse > Preferences)

    2. Selezionate Android dal pannello di sinistra.

    3. Probabilmente vi verrà restituito un messaggio di errore, ma non fateci caso accettate ed impostate il percorso dell'SDK nel pannello principale, premendo Browse... e selezionando il giusto percorso.

    4. Premete Apply, quindi OK.



Finito, se non riuscite a scaricare il plugin potete provare a sostituire il tipo di protocollo del repository cambiandolo da https:// a http:// oppure se vi trovate dietro un firewall (magari quello della vostra azienda) allora impostate in Eclipse l'indirizzo del proxy (Window > Preferences > General > Network Connections). Se proprio non riuscite in nessun modo ad installare il plugin in questo modo allora potete provare ad eseguire l'installazione manuale procedendo in questo modo:

  1. Scaricate manualmente il file del plugin ADT

  2. Decomprimete il file nella sua cartella

  3. Seguite i passi 1 e 2 sopra descritti

  4. Premete New Local Site...

  5. Nella finestra di dialogo successiva selezionate la cartella dove avete decompresso il plugin

  6. Eseguite poi i passi dal 5 all'11, come descritti in precedenza, per completare l'installazione

  7. Nel caso si dovesse aggiornare il plugin utilizzare la stessa procedura!


Questo e tutto se vorreste leggere un documento ufficiale su questa procedura vi rimando alla documentazione originale:

http://code.google.com/android/intro/installing.html#installingplugin

mercoledì, gennaio 16, 2008

First application...





Questo video è molto interessante per un veloce approccio allo sviluppo ed il tipo non spiega poi cosi male, logicamente in inglese.




Powered by ScribeFire.

martedì, gennaio 15, 2008

Android e l'hardware...

La Winstron NeWeb Corp., una compagnia cinese, ha presentato al CES 2008 il primo telefono che ospiterà Android. Si chiama Dual Net Phone-GW4 ed al momento non usa Android ma un sistema Linux 2.6 fornito da Montavista. Come interfaccia viene utilizzata la Qtopia Phone Edition di Trolltech. Implementa Opera mobile version come browser, può funzionare come terminale sia GSM/GPRS che WiFi, utilizzando in quest'ultimo caso un client integrato per il VoIP. Ha un modulo Bluetooth ed è equipaggiato con un processore a 216 MHz prodotto dalla Texas Instruments. Lo schermo è un 2,5 pollici sensibile al tocco, accompagnato da una tastiera full-qwerty. Non mancano il lettore di MP3 e la fotocamera integrata da 2 MegaPixel.
Dalle dichiarazioni di un rappresentante della Winstrom il porting sul nuovo sistema dovrebbe essere completato entro marzo. Il telefono equipaggiato con Android dovrebbe essere immesso sul mercato già nel secondo quarto di questo anno rendendo il GW4 il primo telefono con Android annunciato e sicuramente tra i primi cellulari Android immessi sul mercato. Probabilmente vedremo questo telefono commercializzato con un altro nome e con un altro brand visto i trascorsi della Winstrom mentre per il prezzo di vendita si dovrà aspettare.
Alcuni hacker non potendo pazientare così tanto hanno modificato Android per farlo funzionare su alcuni dispositivi reali già disponibili. Si tratta dell'Atmark-Techno's Armadillo-500 e sul PDA SL-C760 di Sharp questo è il link della notizia dove si possono vedere anche alcuni video. Per quest'ultimo dispositivo il porting non è stato particolarmente complesso visto che utilizza già nativamente un sistema Linux embedded. Per una vera chiamata prima del rilascio dei primi telefoni ufficiali, sarà probabilmente necessario attendere il porting di Android sul GreenPhone di TrollTech o sul Neo1973, il famoso telefono powered by Linux che sembra essere uno degli ospiti ideali per l'OS mobile di Google.
La start-up californiana a-la-Mobile invece ha presentato la prima suite di applicazioni per Android finora mai creata. I programmi includono tutto il necessario, dal browser al gestore della telecamera e passando per i giochi, per rendere uno smartphone completo ed utilizzabile. La a-la-Mobile ha utilizzato come prototipo per lo sviluppo un HTC Qtek 9090 su cui è stato installato Android, completato con uno stack di telefonia curato e preparato dalla stessa.
Staremo a vedere chi si accaparrerà il primato...

domenica, gennaio 13, 2008

Cosa è Android?

Android è una piattaforma software per i terminali mobili che include un sistema operativo, middleware e applicazioni. L'Android SDK fornisce i tools e le API necessarie ad iniziare lo sviluppo di applicazioni per questa piattaforma usando Java come linguaggio di programmazione.

Le caratteristiche principali sono:

  • L'Application framework utilizzato favorisce il riuso e la sostituzione dei componenti

  • Dalvik virtual machine ottimizzata per i dispositivi mobili

  • Web browser integrato basato su software open source (WebKit engine)

  • Grafica ottimizzata data da una propria libreria 2D; grafica 3D basata sulle specifiche OpenGL ES 1.0 (accelerazione hardware opzionale)

  • SQLite per lo storage di dati strutturati

  • Supporto al multimedia per i piu diffusi formati audio, video, ed immagine (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

  • Telefonia GSM (dipendente dall'hardware)

  • Bluetooth, EDGE, 3G, e WiFi (dipendente dall'hardware)

  • Videocamera, GPS, bussola, e accellerometro (dipendente dall'hardware)

  • Ricco ambiente di sviluppoche include un emulatore di periferica, tool per il debugging, gestione della memoria e delle performance, plugin per lo sviluppo su Eclipse


L'Architettura di Android è riassunta nell'immagine sottostante e viene spiegata componente per componente di seguito:



Clicca sull'immagine per ingrandire

Applications
Android viene distribuito con un set di applicazioni minimodi applicazioni che includono un email client, programma per gli SMS, calendario, mappe, browser, contatti, ed altri. Tutte le applicazioni sono scritte in Java.

Application Framework
Gli sviluppatori hanno il pieno accesso alle stesse framework API usate dalle applicazioni integrate. L'architettura delle applicazioni sono state progettate per il riuso dei componenti; ogni applicazione può mettere a disposizione le proprie potenzialità e qualsiasi altro programma le può sfruttare (nei limiti di sicurezza imposte dal framework). Questo stesso meccanismo permette all'utente di sostituire i componenti stessi delle varie applicazioni. Ragione per cui tutte le applicazione sono costituite da set di sistemi e servizi che includono:


  • Un ricco ed estensibile set di Views (Viste) che possono essere usate per costruire le applicazioni, quali liste, griglie, caselle di testo, bottoni e tutto ciò che può essere eseguito in un web browser.

  • Content Providers che abilitano le applicazioni ad accedere a dati di altre applicazioni (come ad esempio i Contatti), o a condividere i propri.

  • Resource Manager, (gestore di risorse) forniscono il supporto all'accesso a risorse di altro tipo, diverso dal codice, come ad esempio stringhe per la localizzazione delle applicazioni, elementi grafici e file di layout

  • Un Notification Manager (gestore delle notifiche) che abilita ogni applicazione a mostrare le proprie notifiche nella barra di stato

  • Un Activity Manager (gestore delle attività) che gestisce il ciclo di vita di ogni applicazione e fornisce un navigation backstack condiviso


Per maggiori dettagli e spiegazioni esaurienti su come scrivere applicazioni vi rimando a questo link ufficiale, che spero presto tradurre o quantomeno commentare, Writing an Android Application.

Libraries
Android include un set di librerie C/C++ usati dai vari componenti di sistema. Queste potenzialità sono accessibili dallo sviluppatore attraverso il framework di Android. Alcune di queste librerie sono elencate qui sotto:


  • Libreria C di sistema - una implementazione BSD-derived della libreria standard C di sistema (libc), ottimizzata per periferiche embedded Linux-based

  • Librerie Multimediali - basate sulle PacketVideo OpenCORE; queste librerie supportano l'esecuzione e la registrazioni dei più diffusi formati audio, video ed immagine, incluso MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG

  • Surface Manager - fornisce il supporto per la gestione del display e degli elementi grafici 2D e 3D alle varie applicazioni

  • LibWebCore - un moderno web browser engine che fornisce supporto al browser di Android e permette di integrare viste in stile web

  • SGL - 2D graphics engine

  • Librerie 3D - una implementazione basata sulle API OpenGL ES 1.0; le librerie usano o l'accelerazione hardware 3D (dove disponibile) o il software di rasterizzazione 3D ottimizzato per questa piattaforma

  • FreeType - librerie di rendering bitmap e vettoriale per i font

  • SQLite - un potente e leggero database relazionale disponibile a tutte le applicazioni


Android Runtime
Android include un set di librarie interne che forniscono molte delle funzionalità disponibili nelle libreria di Java.
Ogni applicazione su Android viene eseguita in prorpio processo, in una prorpia istanza nella Dalvik virtual machine. Dalvik ha scritto che ogni periferica può eseguire efficientemente più Virtual Machine. La Dalvik VM esegue file in un formato eseguibile proprio (Dalvik Executable format, .dex appunto) ottimizzati per un utilizzo minimo di memoria. La VM è register-based cioè basata su registri, ed esegue classi compilate da compilatori Java e trasformate nel formato .dex grazie al traduttore "dx" incluso nel framework.
La Dalvik VM conta sul kernel Linux per fornire funzionalità come il threading e la gestione a basso livello della memoria.

Linux Kernel
Android conta su di un kernel Linux versione 2.6 for per la gestione del sistema base avendo supporto alla sicurezza, gestione della memoria, gestione dei processi, stack di rete e gestione dei driver. Il kernel fornisce anche un layer di astrazione tra l'hardware ed il resto del software.



Con questo penso di aver finito, vi ricordo che questa è una traduzione molto personale di questa pagina senza nessun desiderio/aspirazione di completezza e vi rimando alla stessa per ogni altra informazione.

Inoltre vi segnalo questi 3 video che potete anche trovare direttamente su Youtube che spiegano meglio il framework e la struttura di Android, logicamente in lingua inglese:


venerdì, gennaio 11, 2008