Ubuntu e Android: Come, quando, perchè e tutto il resto
avendo cercato notizie in merito a problemi sorti con la coppia descritta nel titolo senza trovarle ne qua ne in altri luoghi e dopo essermi consultato via pm con il moderatore bite che ringrazio per l'assistenza al fine di capire come, e dove, postare questo tutorial senza uscire dalla filosofia del forum che ovviamente ruota intorno a Ubuntu ho deciso di scrivere questa guida sul come utilizzare al meglio tutto ciò che riguarda Android sulle nostre Ubuntu box.
AVVERTIMENTI
1) Questa guida non è scritta da un dipendente Google, sono si uno sviluppatore Android ma lavoro per conto mio e per altre società delle quali ovviamente non do nessun riferimento; ne consegue che questa guida non è non vuole avere nessun carattere e nessuna patente di ufficialità.
2) In questa guida non verranno trattati argomenti inerenti la programmazione su Android perchè sarebbe sia impossibile liquidare il discorso con un post che completamente ot e contro la filosofia del forum.
3) In questa guida tratterò di tutti gli aspetti riguardanti l'installazione dei vari ambienti (AppInventor, sdk, sorgenti Android e compilazione, ide, ecc) in modo che possano funzionare su Ubuntu. Tratterò altresì delle questioni legate al mero testing di questi ambienti sia su veri terminali Android che su emulatori di tali terminali. Parlando di emulatori nel 99% dei casi si intende quel programma capace di emulare un qualcosa protetto da norme di copyright o che non si ha titolo di emulare; quindi di un qualcosa di illegale e vietato dalle regole del forum. Tuttavia nel caso in questione gli emulatori sono compresi negli ambienti di sviluppo che andremo a scaricare e configurare, sono liberi di qualsiasi restrizione sul loro utilizzo, messi a disposizione dal detentore dei copyright stessi che non ne ostacola ma anzi, per ovvie ragione, ne incoraggia l'utilizzo. Tali emulatori funzionano con delle rom preconfezionate ed esistenti nel ambiente di sviluppo stesso o a mezzo rom ottenibili compilando i sorgenti che sono liberi ed open source; nessun tipo di operazione illegale è necessaria al loro funzionamento.
4) Tutti i link proposti in questa guida, lo dico in anticipo, puntano alla documentazione ufficiale di Android. Niente di quanto trattato qua proviene, almeno al momento, da siti di terzi anche se a piè pagina sarà presente un elenco di siti e forum che, rigorosamente imho, ho trovato utili e interessanti; sentitevi liberi di ignorarli se non vi interessano o integrarli con altri che magari non conosco.
SUDDIVISIONE DELLE SEZIONI
Questa guida è divisa nelle seguenti sezioni:
- Configurazione dispositivo - Viene descritta la configurazione del dispositivo
- AppInventor - Verranno descritti gli aspetti legati al installazione, configurazione e testing
- SDK - Come e cosa scaricare, come configurarlo e dove metterlo nel proprio filesystem, testing
- Sorgenti - Come configurare l'ambiente, scaricare i sorgenti, compilarli e testare le nostre rom
- Ambienti di sviluppo - Ide per sviluppare applicazioni Android; quali sono, come e quali plugin installare
- Documentazionel - Link alle risorse online
Quale che sia l'operazione che vi accingete a fare, uso del sdk di appinventor o download di una rom preconfezionata, la prima cosa da fare è impostare il dispositivo Android.
Codice: Seleziona tutto
Impostazioni -> Applicazioni -> Sorgenti Sconosciute (spuntare questa voce)
Impostazioni -> Applicazioni -> Sviluppo -> Debug Usb (spuntare questa voce)
Impostazioni -> Applicazioni -> Sviluppo -> Stay awake (spuntare questa voce) ***
Adesso collegate il cavo usb e siete apposto.
AppInventor
AppInventor è un grosso tool messo a disposizione da Google stessa. E' gratuito, funziona con un interfaccia web basata su java (quindi funziona su un browser) e consente di creare da 0 applicazioni anche complesse senza sapere niente di programmazione ed anche di proporle sul market.
I prerequisiti principali sono l'avere un account di posta gmail è che java sia installato correttamente nel sistema.
Abilitate i repositari partner e impartite questi comandi.
Codice: Seleziona tutto
sudo apt-get update
sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre sun-java6-plugin
Codice: Seleziona tutto
sudo update-alternatives --config java
Adesso scaricate questo pacchetto http://dl.google.com/dl/appinventor/ins ... .1_all.deb e installatelo con il comando:
Codice: Seleziona tutto
sudo dpkg -i appinventor-setup_1.1_all.deb
Codice: Seleziona tutto
xxx@yyyy:/home/xxx$ cd /usr/google/appinventor
xxx@yyyy:/usr/google/appinventor$ ls
commands-for-Appinventor extras from-Android-SDK license.txt
xxx@yyyy:/usr/google/appinventor$
NB: Tutti i comandi vanno invocati con sudo.
adbrestart: questo serve a riavviare il processo adb (Android Debug Bridge) che si occupa di connettere il dispositivo android e accedervi
adbdevices: questo mostra i devices connessi; può capitare che questo comando ritorni un errore di permessi, in questo caso è utile eseguire adbrestart
run-emulator: lancia l'umulatore e ci si connette come se fosse un vero terminale Amdroid
Il passo sucessivo è accedere all'interfaccia di AppInventor (ricordo che non sarà possibile accedere a questa interfaccia se non si è loggati con un account gmail) e per farlo è sufficente puntare il browser sul primo semplicissimo tutorial a questo indirizzo http://appinventor.googlelabs.com/learn ... part1.html
Non è mio scopo spiegarvi il funzionamento di AppInventor ma una breve delucidazione sul meccanismo di connessione al dispositivo è doverosa. Seguendo il tutorial al punto Open the Blocks Editor and connect to the emulator vi verrà detto appunto di cliccare sul pulsante in alto a destra in AppInventor per aprire l'editor e connettersi al emulatore. Una volta scaricato e installato il componente java vi troverete davanti ad una schermata come quella del tutorial con alto a destra il pulsante Connect to device. Cliccatelo e dovrebbe apparirvi la lista dei dispositivi collegati (es: 10001f36ea8c) a questo punto basta selezionarne uno e cliccarci sopra per dare il via alla connessione che può durare anche due minuti durante i quali il telefonino li accanto lampeggia di giallo prima di diventare verde. Tuttavia può capitare che al posto dei device connessi ci siano tanti punti interrogativi. Ciò sta a significare che il server adb è andato nel pallone e quindi va riavviato con il comando adbrestart. Chiudete il block editor e digitate questi comandi.
Codice: Seleziona tutto
cd /usr/google/appinventor/commands-for-Appinventor
sudo ./adbrestart
sudo ./adbdevices
SDK
L'SDK è l'ambiente di sviluppo ovvero quel insieme di librerie e programmi che consentono di sviluppare applicazioni per Android. Per scaricarlo è sufficente cliccare su questo link: http://dl.google.com/android/android-sd ... ux_x86.tgz e decomprimere l'archivio. Ricordatevi che come pre requisiti avete gli stessi di AppInventor ovvero account gmail e java installato e configurato.
I possessori di un sistema a 64bit dovranno anche dare il seguente comando:
Codice: Seleziona tutto
sudo apt-get install ia32-libs
Codice: Seleziona tutto
sudo mv android-sdk-linux_VERSION /usr/google
Codice: Seleziona tutto
export PATH=${PATH}:/usr/google/android-sdk-linux_x86/tools
Codice: Seleziona tutto
sudo android
Virtual Device
Questa opzione serve a creare un collegamento al emulatore.
Installed packages
Questa opzione vi da la possibilità di verificare eventuali aggiornamenti ai pacchetti installati e di accettare tutte le licenze in blocco qualora decideste di aggiornare.
Available packages
Questa opzione vi offre la possibilità di installare pacchetti opzionali e anche in questo caso di accettare tutte le licenze in un colpo solo; consiglio di scaricarli tutti. In questa schermata, inoltre, avrete la possibilità di inserire l'url (Add Add-on Site) di eventuali repositari esterni dai quali attingere.
Settings
Serve per settare un eventuale server proxy se necessario e forzare il dowload qualora insorgessero errori http
About
C'è biosogno di dirlo ?
Una volta aggiornato non rimane che creare il collegamento al emulatore e per farlo cliccate su Virtual Device e compilate i campi come segue:
Name: Quello che vuoi, es: AndoridEmulator
Target: Android 3.1 - API Level 12
SD Card: 512 in size
Il resto al momento lo lascerei invariato. Dopo aver creato l'avd clicchiate su start e dopo su Launch per vedere l'emulatore in funzione.
Anche con l'sdk abbiamo finito, per ulteriori informazioni su come utilizzarlo in combinazione ad un ide vi rimando alla sezione apposita.
Sorgenti
E qua casca l'asino, pardon il pinguino, perchè cosa ci può essere di più bello per dei linuxiani che scaricare i sorgenti di un sistema operativo, certamente limitato rispetto ad ubuntu ma non più di tanto, e metterci il nasino dentro per poi, magari, ricompilarsi delle rom e vedere come funzionano sul proprio emulatore ?
Sappiate subito, però, che per scaricare tutti i sorgenti posso occorrere anche due ore di tempo quindi armatevi di mooolllltttaaaaaa pazienza
Iniziamo con dire che java deve essere al suo posto ed anche l'sdk deve essere configurato e funzionante e aggiungiamo che i sorgenti pesano circa 2.6GB e occorrono circa 10/12GB di spazio per la compilazione.
Finito questo breve escursus prepariamo il sistema per accogliere il tutto. Il primo passo è installare un pò di pacchetti anche se è probabile che alcuni ci siano già nel sistema.
64bit
Codice: Seleziona tutto
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos
Codice: Seleziona tutto
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev x11proto-core-dev libx11-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos
Codice: Seleziona tutto
mkdir mkdir ~/bin
PATH=~/bin:$PATH
Codice: Seleziona tutto
curl https://android.git.kernel.org/repo > ~/bin/repo
chmod a+x ~/bin/repo
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u git://android.git.kernel.org/platform/manifest.git
Codice: Seleziona tutto
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
Codice: Seleziona tutto
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
http://source.android.com/download
************************************************************
Codice: Seleziona tutto
repo sync
Codice: Seleziona tutto
. build/envsetup.sh
Tali opzioni determinano il tipo di rom che andremo a creare. A titolo di esempio:
Codice: Seleziona tutto
lunch full-userdebug
oppure sempre a titolo di esempio
Codice: Seleziona tutto
lunch full_crespo-user
Le opzioni passabili alla prima parte di lunch (prima del segno meno) sono:
generic: E' una configurazione con molti accessori e può funzionare anche sul emulatore.
full: E' la configurazione completa di tutti i linguaggi, le applicazioni i programmi ecc e anche questa può girare sul emulatore.
full_crespo: Come detto questa è la configurazione per il Nexus e non può girare sul emulatore.
Mentre le opzioni da passare alla seconda parte del lunch (dopo il segno meno) sono:
user: E' una configurazione con accesso limitato ideale per rom come quelle che si trovano nei telefoni appena comprati.
userdebug: Configurazione simile a user ma con l'accesso di root attivo e alcuni strumenti di debug
eng: Configurazione solo per lo sviluppo che comprende strumenti di debug aggiuntivi oltre al accesso di root.
Adesso che abbiamo illustrato le possibilità possiamo passare a compilare la rom. Per un semplice test direi che una configurazione completa con in più l'accesso di root e gli struenti di debug può adare bene quindi aprite il terminale e date:
Codice: Seleziona tutto
cd /home/tuo_utente/WORKING_DIRECTORY
. build/envsetup.sh (il punto è fondamentale)
lunch full-eng
Codice: Seleziona tutto
printconfig
Codice: Seleziona tutto
xxx@yyyy:~/WORKING_DIRECTORY$ printconfig
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=3.1.4.1.5.9.2.6.5
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
Codice: Seleziona tutto
make -j3
Codice: Seleziona tutto
emulator
Ambienti di sviluppo
Esistono 2 ambienti di sviluppo per applicazioni Adroid. Eclipse che è quello predefinito da Google, Netbeans.
Eclipse
Per installare eclipse usate il comando
Codice: Seleziona tutto
sudo apt-get install eclipse
Codice: Seleziona tutto
Help -> Install New Sofdtware
Codice: Seleziona tutto
https://dl-ssl.google.com/android/eclipse
Codice: Seleziona tutto
http://dl-ssl.google.com/android/eclipse
Codice: Seleziona tutto
Window -> Preferences e selezionate android immettendo poi il percorso alla cartella in cui abbiamo scaricato l'sdk
NetBeans
Per installare NetBeans usate il comando
Codice: Seleziona tutto
sudo apt-get install netbeans
Codice: Seleziona tutto
Tool -> Plugins
Codice: Seleziona tutto
Add -> e inserite questo indirizzo: http://kenai.com/downloads/nbandroid/updates.xml
- Adesso recatevi nel tab Available Plugins dove dovrete cercare android e poi premere install.
Documentazione
AppInventor- Documentazione ufficiale in inglese [/li]
- Tutorial in italiano
- [li]Tutorial http://sites.google.com/site/niktorthen ... -android-1
- Video Tutorial http://www.tuttoandroid.net/android/vid ... tor-10033/
- Tutorial http://seblogapps.blogspot.com/2011/04/ ... r-sul.html
- Video Tutorial http://www.androidgeek.it/tutorials/vid ... -inventor/
- Tutorial in inglese
- [li]Video Tutorial http://cmoney12051.com/AppInventor/
SDK- Documentazione ufficiale in inglese
- [li]Sito http://developer.android.com/index.html
- SDK http://developer.android.com/sdk/index.html
- Guida per sviluppatori http://developer.android.com/guide/index.html
- Esempi http://developer.android.com/resources/ ... tag=sample
- Articoli http://developer.android.com/resources/ ... ag=article
- Tutorial http://developer.android.com/resources/ ... g=tutorial
- Video http://developer.android.com/videos/ind ... q05KqjXTvs
- Blog http://android-developers.blogspot.com/
- Tutorial in inglese
- [li]Video Tutorial http://cmoney12051.com/AppInventor/
- Risorse in italiano
- [li]Forum http://www.androidiani.com/forum/
Sorgenti- Documentazione ufficiale in inglese
- [li]Sito http://source.android.com/
- Sorgenti http://source.android.com/source/index.html
- Informazioni per sviluppatori http://source.android.com/tech/index.html
- Forum http://source.android.com/community/index.html
- Adesso recatevi nel tab Available Plugins dove dovrete cercare android e poi premere install.
E' tutto. Buon divertimento