Installare App Inventor 2 su Ubuntu 14.04

ai2App Inventor 2 (di seguito nominato AI2) è uno strumento online costruito in Java per realizzare APP ovvero file APK eseguibili su smartphone Android in modalità visuale giunto alla sua seconda versione suddiviso in 2 componenti fondamentali, l’ambiente di sviluppo tramite browser web e il server di sviluppo ovvero di compilazione e realizzazione dell’APK. Il tutto è disponibile online a questo indirizzo:
http://ai2.appinventor.mit.edu/
dopo essersi autenticati usando un account Google ovvero una email di Gmail. E’ un progetto originato dal team di sviluppo di Google ed è Free e Open Source Software quindi è possibile anche scaricarlo e installarlo sul proprio PC e usarlo più velocemente che non la versione online ovvero non connessi a Internet a patto di avere un PC sufficientemente potente. E’ anche possibile fare un server a disposizione di un piccolo numero di utenti sulla rete locale, ma il server di sviluppo non è progettato per gestire grandi carichi, e si consiglia di non utilizzarlo per fornire App Inventor 2 per più di una manciata di utenti. (Alcune persone hanno avuto esperienze positive con un massimo di 40 utenti però utilizzando una macchina server potente e non un computer portatile)

Per scaricare e installare AI2 dobbiamo seguire le istruzioni in inglese che si trovano a questo indirizzo:
https://docs.google.com/document/pub?id=1Xc9yt02x3BRoq5m1PJHBr81OOv69rEBy8LVG_84j9jc

Partiamo con lo scaricare i sorgenti di AI2 disponibili a questo indirizzo:
http://appinventor.mit.edu/appinventor-sources/
Essendo la ns una installazione dedicata su Ubuntu 14.04 dobbiamo scegliere di scaricare i sorgenti nel formato tar.gz che ad oggi sono circa 271 MB.

Una volta scaricati è necessario scompattarli. Quindi ho creato una cartella nella mia home di nome ai4a (App Inventor For (pronuncia come Four ovvero 4) All) che ho visto essere la sigla con cui viene definito AI2 per comodità e ivi ho copiato il file scaricato mit-cml-appinventor-sources-9991417 (un domani potrebbe avere un nome differente).

Adesso cliccando sopra all’icona del suddetto file è possibile avviare l’operazione di scompattamento e verrà creata una nuova  cartella col nome del file stesso.

Entriamo quindi nella nuova cartella creata e poi nella cartella appinventor:

~/ai4a/mit-cml-appinventor-sources-9991417/appinventor/

per prima cosa lanciamo il terminale ed eseguiamo il comando ‘ant‘. Tale comando è un file di libreria JAVA sviluppata dalla Apache Software Foundation che permette di automatizzare il processo di sviluppo di applicazioni Java. Con Ant, infatti, è possibile creare un progetto che compila, genera la documentazione, realizza file jar, war ed ear ed effettua il deploy di un’applicazione web su un application server, tutto con il semplice lancio di un comando. Il comando è già presente in Ubuntu 14.04 in quanto è installato e già presente il Java OpenJDK. Se per un qualsiasi motivo non fosse presente allora installatelo tramite il programma Ubuntu Software Center inserendo OpenJDK. Procediamo:

$ ant clean

Eseguito il quale possiamo adesso lanciare il comando:

$ ant

al fine di compilare i sorgenti e realizzare gli eseguibili di AI2. La compilazione dovrebbe richiedere alcuni minuti, dipendentemente dalla potenza del vs PC, e terminare con il messaggio BUILD SUCCESSFUL.
Come prima cosa verifichiamo che il tutto sia davvero pronto per l’uso:

$ ant tests

Anche qui è necessario che tutto termini con il messaggio BUILD SUCCESSFUL.

Adesso è necessario installare il Google App Engine SDK per Java. Installare quindi l’ultima versione da:

http://developers.google.com/appengine/downloads.html

ke dovrebbe automaticamente reindirizzarvi a questa pagina:

https://cloud.google.com/appengine/downloads

è un file .zip ad oggi di circa 174 MB. Copiatelo dalla cartella dei file scaricati in quella creata inizialmente col nome di ai4a e quindi cliccate sull’icona e avviato il processo di scompattamento. Fatto questo non è necessario altro in questo caso.

Adesso dobbiamo effettuare l’ultima verifica a secondo dell’installazione di Ubuntu 14.04 a 32 bit o 64 bit. Se la versione è a 32 bit allora è ok così altrimenti se abbiamo una versione da 64 bit è necessario installare i seguenti pacchetti software affinchè possiamo far girare anche programmi realizzati per la sola versione a 32 bit che sono presenti in AI2. Per fare questo conviene utilizzare ancora una volta il terminale e digitare il seguente comando:

$sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

per non sbagliare copia/incolla del tutto assicurandosi che sia tutto su una sola linea.

Ormai ci siamo, non ci resta che avviare AI2 e vedere se funziona correttamente. Quindi se avete seguito letteralmente tutte le istruzioni fin qui elencate non vi resta che avviare AI2 con questo comando sempre da terminale e posizionati nella cartella base ai4a prestando attenzione a 2 cose. Il comando che segue è quello ad oggi ma se avete scaricato versioni più aggiornate del Google App Engine SDK per Java o dei sorgenti di AI2 allora dovrete aggiornare i relativi nomi nel comando suddetto evidenziati in rosso. Ma comunque fate sempre riferimento ai nomi esatti di quello che avete scaricato perchè potrebbe essersi modificati ulteriormente nel tempo. Attenzione anche al punto iniziale che è necessario:

$./appengine-java-sdk-1.9.19/bin/dev_appserver.sh –port=8888 –address=0.0.0.0 ./mit-cml-appinventor-sources-9991417/appinventor/appengine/build/war/

Apparirà una lista di scritte con varie informazioni e terminerà con:

INFORMAZIONI: Dev App Server is now running

se così non fosse qualcosa è andato storto.
Il terminale adesso è non + disponibile in quanto appannaggio di AI2 che lo utilizzerà per scriverci i suoi mesaggi di stato finchè non lo chiuderete e con esso l’applicazione stessa che cesserà di funzionare.
Per vedere in funzione AI2 non vi resta che aprire un browser web come Firefox o Chromium e digitare come indirizzo il seguente:

http://localhost:8888/

il quale vi mostrerà la videata di login di AI2 dove inserire una email per poter accedere all’applicativo e che potrete usare per avere gruppi di progetti separati tra loro oppure se accedete in più utenti allo stesso PC e avere quindi separati i vs lavori.

Potete quindi ora realizzare i vs progetti ma ancora non potete compilarli e realizzare il vs APK in quanto è necessario avere installlato il 2° componente di APP INVENTOR 2 ovvero qello che viene chiamato il Build Server ovvero il componente che a partire dal vostro progetto realizza appunto l’eseguibile APK che installato su smartphone e tablet darà vita alla vs APP.

È possibile utilizzare il computer locale come Build Server. È anche possibile designare una macchina diversa, ma al momento non ci interessa. Per avviare ed eseguire il Build Server sul computer locale, aprire il terminale e posizionarsi nella cartella buildserver di App Inventor 2 che nel ns caso è:

~/ai4a/mit-cml-appinventor-sources-9991417/appinventor/buildserver

e lanciare il comando:

ant RunLocalBuildServer

Solita sfilza di righe di testo e se tutto è andato bene deve apparire infine:

[java] INFORMAZIONI: Server running

Per poter verificare il corretto funzionamento del Build Server è possibile tramite browser web interrogarlo con 2 opzioni. La prima ci dice se è regolarmente in funzione:

http://localhost:9990/buildserver/health

e se tutto funziona correttamente risponderà con OK

mentre la seconda opzione ci fornisce anche delle informazioni di stato:

http://localhost:9990/buildserver/vars

Ad esempio le mie sono queste che seguono:

state UP
start-time 24-apr-2015 15.34.14 CEST
uptime-in-ms 2166515
vm-name OpenJDK 64-Bit Server VM
vm-vender Oracle Corporation
vm-version 24.79-b02
buildserver-version none
buildserver-git-fingerprint fatal: Not a git repository (or any of the parent directories): .git
os-arch amd64
os-name Linux
os-version 3.13.0-49-generic
num-processors 4
load-average-past-1-min 0.43
total-memory 344981504
free-memory 315646104
max-memory 1780482048
used-heap 29335400
used-non-heap 18698728
count-async-build-requests 2
rejected-async-build-requests 0
successful-async-build-requests 2
failed-async-build-requests 0
maximum-simultaneous-build-tasks-allowed unlimited
completed-build-tasks 2
maximum-simultaneous-build-tasks-occurred 0
active-build-tasks 0

Adesso abbiamo entrambi i componenti di AI2 creati e funzionanti. Per poter realizzare dei progetti e compilarli abbiamo tutto il necessario ma non possiamo però collaudarli ovvero non possiamo trasferire l’APK così creato sul ns smartphone o tablet per i test. Al contrario di AI2 online dove è possibile effettuare da menu l’operazione di Compila ( mostra il QR code x l’apk) e ottenere la corrispondente finestrella con il QR code e relativo link per scaricarla direttamente sul ns smartphone o tablet qui la stessa operazione ci fornisce un link a partire da localhost che ovviamente non ha alcun senso non essendo un indirizzo internet valido. Con la seconda opzione del menu ovvero Compila (salva il file apk sul mio computer) otteniamo lo scarico del file apk direttamente nella cartella dei files scaricati del ns browser web e lo dovremmo comunque trasferire in qualche modo sul ns smartphone o tablet. Ecco quindi che ci occorre una soluzione a cui il team di AI2 ha posto rimedio.

Si tratta di scaricare dal Play Store di Google un apposita APP che ci consentirà di connetterci al ns PC tramite il WiFi del router della ns rete di casa o ufficio. Se nn avete il WiFi allora sono dolori ma oggi dovrebbe essere ormai sempre presente. L’APP in questione si chiama MIT AI2 Companion e una volta scaricata e avviata siete pronti al 100%.

In pratica quando vorrete testare il vs progetto vi basterà selezionare Connetti dal menu di AI2 e quindi cliccare su AI Companion, apparirà una finestrelle con un codice QR e lo stesso codice in lettere, avviate ora dal vs smartphone o tablet l’APP appena scaricata ovvero MIT AI2 Companion che vi richiederà se volete leggere il QR code oppure digitare manualmente il relativo codice. Naturalmente per poter leggere il QR code dovrete avere installato sempre sul vs smartphone o tablet anche una APP per la sua lettura, as esempio QR Droid usata anche da me. Letto o digitato il codice, come per magia, si avvierà la vs APP appena realizzata direttamente sul vs dispositivo.

Ultima cosa, creiamo un file di avvio dei 2 componenti di AI2 in modo che scrivano un file di log che può sempre venirci utile. Sempre nella solita ns cartella ~/ai4a lanciando gedit andiamo a scrivere questo file di avvio automatico:

# Avvia il Projects Server e il Build Server

cd ~/ai4a

nohup ./appengine-java-sdk-1.9.19/bin/dev_appserver.sh –port=8888 –address=0.0.0.0 ./mit-cml-appinventor-sources-9991417/appinventor/appengine/build/war/ > ~/ai4a/ai2server-log.out &

cd mit-cml-appinventor-sources-9991417/appinventor/buildserver

nohup ant RunLocalBuildServer > ~/ai4a/buildserver-log.out &

e salviamo il tutto con il nome file startAI2, rendiamolo eseguibile e il gioco è fatto 🙂