In questo articolo controlleremo che tutti gli strumenti necessari siano installati correttamente. Sarà quindi una breve prova dimostrativa di quello che potrete fare con il toolkit messo a disposizione da Google per Android.
Per il momento il nostro obbiettivo sarà quello di far funzionare una demo presente nella cartella sample dell’ndk sul nostro smartphone o su uno emulato (creato tramite l’apposito manager android avd, accessibile anche dalla toolbar di Eclipse una volta installato l’ADT plugin di Android).
Compilare gli esempi
Portatevi tramite linea di comando dentro la cartella dell’ndk ed entrate nella directory samples. Per cominciare, cercheremo di compilare il progetto hello-jni. Entrati nella cartella del suddetto progetto ed eseguiamo i seguenti comandi:
android update project -t android-10 -p .
Aggiorniamo il progetto per la versione 10 delle API Android (target, devono essere installate nel sistema). Con “-p .” indichiamo che la cartella del progetto è quella dove ci troviamo attualmente. Potete settare un diverso tipo di target, ho scelto le API 10 perché posseggo Android 2.3.7 sul mio smartphone, ma potete benissimo creare una macchina virtuale con un’altra versione e testarlo lì (tenete presente che l’emulazione dei terminali Android è più lenta e potrebbe presentare dei problemi. Inoltre supporta “bene” solo la versione 1 di OpenGL ES e non la 2).
C’è la possibilità di aggiornare anche i sotto progetti tramite il parametro aggiuntivo –subprojects .
Fatto questo non vi resta che compilare il codice:
ndk-build
Dovreste avere un output di questo tipo:
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so
Per compilare l’intero progetto e inserirlo nello smartphone ci appoggeremo al programma ant (http://ant.apache.org/).
L’installazione di questo tool non dovrebbe essere un problema, l’unica cosa è che potrebbe essere necessario indicare la cartella bin di ant ed inserirla in PATH, come abbiamo già visto per l’sdk e l’ndk. Gli utenti windows devono fare riferimento all’eseguibile ant.bat che si trova nella cartella bin del file zip che si scarica dal sito ufficiale. Per gli utenti linux segnalo che la cartella bin ed il relativo eseguibile potrebbero trovarsi sotto questo percorso : /usr/share/java/apache-ant (verificate l’installazione del programma nella vostra disto per esserne certi).
Per ora creeremo una versione di debug del progetto che verrà installata automaticamente se lo smartphone è collegato al computer ed è in modalità Debug (per controllarlo basta andare in Impostazioni>Applicazioni>Sviluppo nel vostro Android) oppure su un device emulato e già avviato tramite Android AVD.
ant debug install
In questo modo troverete tra le vostre applicazioni HelloJni se tutto è andato a buon fine. Cliccate sull’applicazione per aprirla e scoprirete un semplice “Hello World” tramite messaggio di testo. Niente di particolare, ma se siete arrivati fin qui senza problemi, tutti gli strumenti funzionano e sono al loro posto.
Di seguito invece riporto alcune tips che potrebbero tornare utili:
- Potrebbe essere necessario includere nel PATH anche la cartella platform-tools dell’SDK.
- adb devices : comando utile per conoscere i dispositivi Android collegati al computer, comprese le macchine virtuali create.
- adb get-state : per visualizzare lo stato attuale dell’Android Debug Bridge.
- adb kill-server : per terminare l’attuale server in esecuzione.
- adb start-server : assicura che un server sia in esecuzione.
- adb -d install path/to/your/app.apk : installa l’app segnalata (apk) sull’unico device usb presente.
- adb -e install path/to/your/app.apk : installa l’app segnalata (apk) sull’unico emulatore attualmente in esecuzione.
- Se avete problemi con awk, entrate in android-ndk-r7/prebuilt/xxx/bin (al posto di xxx avrete il vostro os, come per esempio linux-x86 o windows) e cambiate il nome dell’eseguibile “awk” in “awk_“. Forse questo piccolo bug verrà corretto nelle prossime versioni dell’ndk.
- Si consiglia per gli utenti Windows di effettuare le installazioni di Java (sia jdk che jre), ant ed Android tool (sdk e ndk) in cartelle che non contengano spazi nel path, quindi evitate le installazioni dentro “Program Files (x86)“.
- Potrebbe essere necessario in Cygwin esportare nel file .bash_profile la cartella principale del jdk in questo modo : export JAVA_HOME=/cygdrive/c/Java/jdk1.7.0_02/
Visto che l’articolo per questa volta è molto breve per problemi di tempo, voglio lasciarvi con qualcosa di più del semplice testo visualizzato in un’applicazione (anche se è il risultato dell’esecuzione di codice C che sfrutta l’interfaccia nativa di java).
Quindi entrate nella cartella san-angeles che trovate tra gli esempi, compilatela come abbiamo visto prima e provate ad eseguirla. Potete trovare il video dimostrativo qui, mentre vi lascio lo screenshot fatto con il tool DDMS della demo san angeles eseguita sul mio HTC Tattoo, che purtroppo non riesce a visualizzarla fluidamente…
Conclusioni
Nei prossimi articoli continueremo ad approfondire le nostre conoscenze dei tool, compresa la gestione e creazione dei nostri progetti jni e non solo.
Per ora sperimentate i vari esempi presenti nell’ndk per prendere confidenza con questi strumenti e non dimenticate di commentare se incontrate qualche problema.