di  -  giovedì 19 gennaio 2012

Introduzione

Con questo articolo darò inizio ad una serie di tutorial che introducano la programmazione per Android tramite sdk e/o ndk per la realizzazione di videogiochi e non solo. Queste guide infatti possono essere comunque utili, sopratutto all’inizio, per entrare in confidenza con questo mondo in continuo mutamento e per sviluppare applicazioni per il vostro smartphone.

Visto che ha raggiunto un “discreto” successo e che è possibile trovare questo OS su (passatemi il termine) telefonini per tutte le tasche, mi sembra un ottimo pretesto per imparare a conoscere meglio quest’androide dai mille volti…

Anche se le cose da vedere sono tante, spero di fare una rassegna delle più importanti e basilari, adatte proprio a queste serie di articoli. Come posso quindi non iniziare dall’installazione dell’sdk nei vari sistemi operativi?

Purtroppo non possiedo un Mac e quindi non ho potuto testare l’installazione del software necessario su questo sistema. Ergo non lo includerò nella lista, ma posso dirvi che indicativamente la preparazione dell’OS è simile ad i passaggi seguiti su linux. L’installazione di Ecplipse invece non dovrebbe essere un problema.

Per prima cosa, elenco dei link utili:

SDK Android : http://developer.android.com/sdk/index.html

NDK Android : http://developer.android.com/sdk/ndk/index.html

Eclipse : http://www.eclipse.org/downloads/

ADT plugin (Eclipse) : http://developer.android.com/sdk/eclipse-adt.html

Linux

Per prima cosa controllate di avere tutti gli strumenti necessari per la compilazione. Se avete già installato con successo glibc, make e il vostro compilatore preferito, non dovreste avere problemi nei passi successivi (in unbuntu dovrebbe bastare l’installazione del pacchetto build-essential). Se avete un sistema a 64 bit potrebbe essere richiesta qualche libreria per l’emulazione delle OpenGL ES a 32 bit, su questo fate riferimento hai pacchetti utilizzati dalla vostra distro preferita.

Successivamente controllate di aver installato il Sun Java Development Kit (jdk) e JRE. E’ consigliabile utilizzare questo come default al posto di Open JDK, semplicemente perché è quello “supportato” ufficialmente da Android (potreste riscontrare dei problemi con il non ufficiale, ma nessuno vieta di usarlo).

Fatto questo scaricate l’SDK di Android e l’NDK dal sito ufficiale ed estraeteli dove preferite. Una volta estratti, dovete aggiungere le seguenti variabili di ambiente al vostro .profile (file nascosto nella home, potrebbe anche chiamarsi .bash_profile):

export AD_SDK= “Percorso per la cartella dell’SDK di Android”
export AD_NDK=“Percorso per la cartella del NDK di Android”
export PATH=”$PATH:$AD_SDK/tools:$AD_NDK”

Se non effettuate questa operazione, dovrete sempre specificare il percorso per richiamare gli eseguibili dell’sdk e dell’ndk. Fatto questo effettuiamo il logout e rientriamo con il nostro account. Digitando da terminale il comando android dovrebbe comparirvi la finestra relativa all’AVD Manager. Andate sulla sezione dei pacchetti installati ed aggiornate tutto. Poi potete chiuedere la finestra.

Windows

Per utilizzare anche l’ndk di Android, è assolutamente necessario installare Cygwin, includendo la parte Devel/make e Shells/bash. Una volta completata l’installazione, eseguiamo Cygwin per la creazione iniziale del profilo e testiamo dal prompt dei comandi il corretto funzionamento eseguendo la seguente riga:

make -version

Se il tutto funziona, non vi resta che installare anche qui JDK e JRE. Una volta finito, scaricate l’SDK di Android ed installatelo. Avviate l’AVD Manager ed effettuate tutti gli aggiornamenti.

Concluso questo passaggio, scaricate l’NDK ed estraetelo dove preferite. A questo punto entrate nella vostra cartella di Cygwin ed editate il file .bash_profile nascosto nella vostra home. Anche qui, come in linux, è necessario esportare le variabili di ambiente (in questo caso solo dell’NDK):

export AD_NDK = “Percorso per la cartella del NDK di Android
export PATH=”$PATH:$ANDROID_SDK/tools:$AD_NDK”

Il percorso per la cartella potrebbe essere qualcosa simile a :

/cygdrive/<Lettera del disco>/<Percorso fino alla cartella del NDK>

Per esempio:

/cygdrive/c/android-ndk

Per controllarne la corretta installazione, provate il comando “ndk-build -version” all’interno di Cygwin, se non restituisce errori tutto si è svolto per il migliore dei modi.

Eclipse

Se avete completato le procedure precedenti, potete tranquillamente installare Eclipse (IDE) per il vostro OS. Per gli utenti windows è consigliabile il download della versione classic, per quelli linux invece, fate riferimento alla distro che utilizzate.

Quando installate l’ADT plugin (tramite il menù di Eclipse Help->Install New Software), badate bene di installare anche il plugin per utilizzare C/C++ con Eclipse, ovvero CDT plugin. Per fare questo, aprite sempre la finestra “Install New Software” e selezionate in “Work with” la vostra versione di Eclipse. Da qui basta cercare il plugin sotto la voce Programming Languages. Il pacchetto C/C++ Call Graph Visualization (cioè i plugins incubations) non è essenziale per gli utenti windows.

Conclusioni

Ora dovreste avere tutti gli strumenti per realizzare applicazioni per Android. Anche se questa introduzione è molto stringata, spero che questo percorso appena iniziato sia di vostro gradimento.

Vi ricordo che, come i miei precedenti articoli, sono molto graditi i commenti, sia per suggerire idee, sia per criticare… Tempo permettendo, cercherò di toccare tutti gli argomenti fondamentali, compresi quelli di prima necessità o da voi suggeriti.

Se l’antipasto vi è piaciuto, vi aspetto nella prossima puntata.

20 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Alessandro
     scrive: 

    Benissimo! Avevo iniziato un po’ di tempo fa, nel tempo libero, a interessarmi dello sviluppo per android, ma poi il tempo e’ venuto a mancare :-(

    Posso ora recuperare con questi articoli ;-)

  • # 2
    Simone82
     scrive: 

    Ecco, quando un utente segue un blog, e quel blog gli fornisce su un piatto d’argento dei tutorial sulla programmazione per Android che quell’utente sta tanto cercando, viene voglia di fare una donazione… :)

  • # 3
    Luca_Red
     scrive: 

    Ottimo inizio!! attendo le prossime puntate!!

  • # 4
    Cesare Di Mauro
     scrive: 

    Quel che non mi piace è il dover usare necessariamente Cygwin sotto Windows. Me ne sono liberato anni fa, e non voglio ritornarci.

    Windows ha già un subsystem POSIX-compliant. Google dovrebbe saperlo…

  • # 5
    alessioF
     scrive: 

    Anche se non mi applicherò nella creazione di sw (non riesco a scrivere uno script per matlab e Eprime) reputo la cosa interessante.

    Almeno con androdi se crei qualcosa la puoi provare facilmente, butti l’apk in una uSD e la installi.

    Non capisco il corso in edicola per creare le APP per iPxx se poi bisogna sempre passare dallo store (se non sbaglio) per utilizzarle.

  • # 6
    Mirco Tracolli
     scrive: 

    @ All

    Per prima cosa ringrazio tutti quelli che hanno letto l’articolo! Vedere che suscita interesse è la cosa più bella!!! :D

    @ Cesare

    Non ne conoscevo l’esistenza… per caso ti riferisci a questo?

    http://www.microsoft.com/download/en/details.aspx?id=2391

    Potrei provare ad utilizzare il subsystem ufficiale di windows su win 7, così da vedere effettivamente se ci sono problemi…

  • # 7
    Cesare Di Mauro
     scrive: 

    Sì, è il SUA. L’unica seccatura è che richiede Windows Enterprise o Ultimate, ma chi lavora non ha certo problemi di questo tipo. ;)

  • # 8
    Antonio Barba (TheKaneB)
     scrive: 

    @Cesare: Stendiamo un piumone pietoso su NDK, và… :-D

  • # 9
    Ansem
     scrive: 

    intanto grazie mille per questo fantastica serie di articoli :D
    vorrei chiederti cosa sono di preciso le NDK. conosco le SDK ma le NDK è la prima volta che le sento

  • # 10
    Antonio Barba (TheKaneB)
     scrive: 

    @Ansem #9:
    Native Development Kit.

    In parole povere, su Android bisogna sviluppare codice in Java, che verrà compilato in bytecode, questo bytecode verrà processato in un formato proprietario di Google e verrà dato in pasto alla Dalvik Virtual Machine (una specie di Java Virtual Machine proprietaria).

    Se vuoi scrivere codice “macchina”, cioè codice che venga compilato direttamente per la CPU (è possibile scegliere, al momento attuale, ARMv6, ARMv7, x86 e presto anche MIPS32), devi installare un SDK separato, con cui compilare librerie in C o C++, chiamato NDK appunto.

    Queste librerie verranno incluse nel progetto come “risorse”, verranno caricate a runtime ed verranno eseguite tramite delle chiamate JNI (Java Native Interface).

    Quindi occorre un’applicazione Java di base (anche una cosa molto minimale) che invochi tramite JNI la parte “nativa” compilata in linguaggio macchina.

    Con questo meccanismo si può scavalcare quindi l’overhead della Dalvik VM e operare al livello di qualsiasi applicazione Linux, che è il kernel di Android.

  • # 11
    Onizuka87k
     scrive: 

    Grandissimo! Proprio poco tempo fa ho iniziato a sviluppare un giochino che farà parte della mia tesi di laurea triennale! Non potevo chiedere di meglio :)
    Ottimo inizio, aspetto i seguiti :)

  • # 12
    Mirco Tracolli
     scrive: 

    @ all

    Grazie ancora a tutti!!! Spero di non deludere le aspettative… :D

    @ Antonio

    Prendiamo l’NDK così com’è, nel bene e nel male; sopratutto nel male… :D

    @ Cesare

    Hai già utilizzato il tool? Il link che ho messo è per l’installer di windows 7; se si può utilizzare come cygwin, credo non ci siano problemi… :P

  • # 13
    Cesare Di Mauro
     scrive: 

    L’ho installato e testato un bel po’ di tempo fa (con Vista), ma poi non l’ho usato.

    Dovrebbe funzionare senza problemi, e c’è anche un pacchetto aggiuntivo di strumenti che consente di installare GCC & compagnia.

    L’unico problema potrebbe essere con quelle applicazioni che hanno roba tipo #ifdef __CYGWIN__ et similia, che non consentirebbe una corretta compilazione.

  • # 14
    Antonio Barba (TheKaneB)
     scrive: 

    @Cesare: per gli #ifdef basta mettere -D__CYGWIN__ come parametro nel makefile e siamo a posto. Comunque penso che il metodo più indolore di tutti sia quello di installare una distro linux in VirtualBox se si ha la necessità di sviluppare con NDK. Infatti l’installazione di Cygwin e di quei tools di Google è semi-distruttiva per Windows e di fatto vai a monopolizzare la macchina con roba abominevole. Un setup simile, sempre basato su Cygwin e toolchains derivate da GCC, bisognava farlo con il devkit Nintendo e per settare il tutto ci volevano 3 giorni (senza opzione Linux, tra l’altro!, Cygwin o niente). Dal mio punto di vista, per fare queste cose l’ideale sarebbe dedicare un computer allo scopo, che diventa quindi una workstation, cioè un PC dedicato a fare solo quel task.

    @Mirco:
    Sarebbe interessante trattare anche RenderScript, presente da Android 3.x in poi. Si tratta di un sottoinsieme del C che viene compilato direttamente a runtime da LLVM ed è buono per sviluppare piccole routine in codice nativo senza gli sbattimenti dell’NDK. In futuro il target di compilazione potrebbe essere spostato sul GP-GPU Computing (GPU permettendo), o almeno questo è quanto dichiarato da Google.

  • # 15
    Mirco Tracolli
     scrive: 

    @ Cesare

    La soluzione di Antonio sembra la migliore e la meno invasiva per un utente windows, oltretutto non perde nulla per quanto riguarda l’utilizzo dell’ndk… :D

    @ Antonio

    Per quanto riguarda RenderScript, credo proprio che avrà le mie attenzioni… :P

  • # 16
    Gabriele
     scrive: 

    a me da questo errore quando compilo :P

    can’t open file /cygdriv

    android-ndk-r7/build/awk/check-awk.awk

  • # 17
    Gabriele
     scrive: 

    ho trovato questa soluzione

    http://stackoverflow.com/questions/8116113/problems-with-android-ndk-7-and-awk/8121153#8121153

    anche se come soluzione è poco ortodossa…

  • # 18
    Mirco Tracolli
     scrive: 

    @Gabriele

    La soluzione è per forza quella finché non correggono l’ndk… Infatti è il suggerimento che indicherò nel prossimo articolo :D

  • # 19
    Marco78
     scrive: 

    Non vorrei sembrare ostile ma mi sembra tutto spiegato un po’ troppo alla buona… ci sono cose che proprio non riesco a spiegarmi!
    Sarebbe bello se fosse tutto spiegato più dettagliatamente per andare in contro anche a chi non conosce tutto quello di cui parli!
    Ad ogni modo sto installando… se riesco senza problemi mi rimangerò tutto!

    Ah e ad ogni modo grazie mille per aver pubblicato questi tutorial, è da tanto che avrei voluto iniziare a sviluppare per Android ma non sapevo da dove iniziare!

  • # 20
    Mirco Tracolli
     scrive: 

    @Marco78

    Ti posso assicurare che non è solo una tua impressione, ma questo nasce dal fatto che non c’è un senso di stabilità nell’SDK di Android, sopratutto la parte che riguarda il codice nativo (NDK).

    Ultimamente hanno migliorato molto i vari plugin e presto arriverà il supporto ufficiale dell’NDK in eclipse, ora è in alpha (guarda ADT 20 : http://tools.android.com/download/adt-20-preview ). Sostanzialmente è questo che crea i problemi più grandi…

    Comunque cercherò nei prossimi tutorial di essere più dettagliato. :D

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.