Avvertenze iniziali

Android Studio ha aggiornamenti continui, e cambia sovente.

Le indicazioni che troverete in questa pagina, pur essendo state controllate passo passo nel momento in cui sono state scritte, potrebbero non corrispondere più esattamente al comportamento della versione di Android Studio presente in lab.

In caso di dubbi, fate riferimento a quanto spiegato dal docente a lezione.

Intro

Durante il corso di Applicazioni Mobili verrà utilizzato Android Studio per lo sviluppo di applicazioni Android.

Setup Iniziale

Android SDK

In laboratorio una copia dell’SDK per Android è installato in:

/opt/android-sdk-linux/

Ma con Android Studio non possiamo più utilizzare direttamente questa copia, perché è una directory in cui gli utenti normali non hanno i permessi di scrittura, e questa cosa non piace agli sviluppatori di Android Studio.

Per ovviare a questi problemi utilizzeremo uno script di avvio creato per il laboratorio.

Ridurre lo spazio disco occupato da Android Studio (opzionale)

Per evitare che i file di configurazione e la cache dell’IDE consumino la quota disco della propria area, e per rendere le operazioni più rapide, si può indicare di salvarli in una cartella diversa.

Per farlo, occorre editare (o creare se ancora non esiste) il file ~/.config/Google/AndroidStudio2024.1/idea.properties con il seguente contenuto:

idea.system.path=/var/tmp/UTENTE/android-studio/system
idea.log.path=/var/tmp/UTENTE/android-studio/system/log

sostituendo UTENTE con il proprio nome utente.

Attenzione: il nome della directory cambia ogni volta che Android Studio cambia la versione. Nel caso in cui questa pagina non sia stata aggiornata per tempo, potete lanciare e poi chiudere Android Studio per vedere qual è il nome della directory più recente.

Lo script di avvio non effettua questa configurazione.

AVD (configurato dallo script di avvio per il lab)

L’emulatore di dispositivi AVD tende ad occupare molto spazio disco, e questo può facilmente creare problemi in laboratorio, dove vengono applicate le quote disco agli utenti.

Per ovviare a questo problema è possibile procedere in questo modo:

1) creare una directory temporanea sulla macchina su cui si è loggati:

mkdir -p /local/tmp/${USER}/avd

2) creare un link simbolico per la directory in cui vengono salvati i dispositivi AVD:

mkdir -p ~/.android
cd ~/.android
ln -s /local/tmp/${USER}/avd .

Lo script di avvio creato per il lab si occupa di queste operazioni, che non sono più da fare a mano.

In questo modo lo spazio delle immagini per i dispositivi virtuali non sarà più nell’area disco dell’utente, sul server NFS, ma sul disco locale delle macchine del laboratorio.

Questo però significa che il dispositivo non è più persistente, e sarà da ricreare ogni volta che lo spazio temporaneo viene ripulito.

Prima esecuzione, guida passo passo

Possiamo lanciare l’IDE con lo script di avvio creato per il laboratorio:

/opt/android-studio-lab/android-studio-lab.sh

Il programma ci chiede se vogliamo importare le impostazioni da una versione precedente. Se è la prima volta che lo utilizziamo, o se vogliamo partire con una configurazione pulita, scegliamo di no:

Import settings

Dopodiché il programma ci chiede se vogliamo mandare le statistiche di utilizzo del programma a Google:

Usage statistics

Alla prima esecuzione partirà il setup di Android Studio, che verifica l’installazione. Premere Next per continuare.

Import settings

Lasciare l’impostazione predefinita Standard, e premere Next:

Import settings

Verificare e poi confermare le impostazioni premendo Next:

Import settings

Android Studio ci informa che possiamo utilizzare l’emulatore AVD con l’accelerazione hardware. Premere Finish per andare oltre.

Import settings

A questo punto parte la verifica dell’SDK. Se non ci sono ulteriori aggiornamenti, apparirà una finestra come la seguente, in cui possiamo premere Finish per andare oltre.

Import settings

Se invece ci sono degli aggiornamenti da fare, confermiamo il download.

Nota: al momento non c’è uno screenshot di questo caso.

Grazie allo script di avvio creato per il laboratorio, questi aggiornamenti verranno scaricati in una directory temporanea, locale alla macchina, di proprietà dell’utente, e non nella home dell’utente. In questo modo non finiranno nel calcolo della quota disco.

Se ci sono stati aggiornamenti, la prossima volta che si utilizza Android Studio conviene, se possibile, riutilizzare la stessa postazione su cui si era oggi, per evitare un nuovo download.

Dopo aver premuto Finish, siamo finalmente arrivati al termine del setup iniziale.

Questo setup viene fatto solo alla prima esecuzione di Android Studio.

Dalla prossima esecuzione si partirà direttamente dal benvenuto in Android Studio, oppure dall’ultimo progetto, se l’abbiamo lasciato aperto.

A questo punto dovremmo poter finalmente vedere il benvenuto di Android Studio.

Scegliamo di creare un nuovo progetto:

Import settings

Nell’elenco possiamo ad esempio scegliere la Empty Activity:

Import settings

In questa schermata possiamo ora andare a definire i parametri del nuovo progetto, in particolare dargli un nome, e scegliere il linguaggio di programmazione da utilizzare e la versione minima di Android richiesta per la nostra futura app.

Nota: le API precedenti alla 23 non sono disponibili in laboratorio, quindi scegliere la versione 23 o una successiva.

Import settings

Finalmente si aprirà la finestra dell’IDE. La creazione del primo progetto è particolarmente lenta, perché Android Studio deve scaricare tutta una serie di librerie e componenti, e poi indicizzare tutti questi componenti, altra operazione molto lenta.

Durante queste operazioni, che possono protrarsi per diversi minuti, vedremo la scritta ‘Loading…’ al posto dei file del progetto:

Import settings

Quando finalmente il progetto ha finito la compilazione iniziale e Android Studio ha finito di indicizzare i file, possiamo creare un nuovo Android Virtual Device (AVD):

1) selezionando il tab Device Manager nella colonna di destra,

2) premendo poi sul tasto + all’interno del tab che si è aperto,

3) e selezionando infine Create Virtual Device dal menù pop-up:

Import settings

Si aprirà un nuovo dialogo in cui andremo a definire le impostazioni del dispositivo virtuale. Scegliamo il Pixel 3a, la cui immagine ha a disposizione il Play Store:

Import settings

Nella schermata successiva possiamo andare a scegliere la system image da utilizzare.

Attenzione: ogni dispositivo è compatibile solo con alcune system images! Non possiamo sceglierle a caso.

In laboratorio non tutte le immagini sono presenti, anche se vengono proposte nell’elenco, in grigio. Non utilizzare un’immagine non presente, e non fare download di un’immagine non presente, per non occupare disco inutilmente.

Nel caso del Pixel 3a che abbiamo scelto in precedenza, possiamo lasciare l’immagine API 35, che è la scelta predefinita:

Import settings

Nell’ultima schermata possiamo dare un nome all’emulatore, e definire gli ultimi parametri, prima di premere Finish per andare oltre:

Import settings

Se non ci sono stati errori o problemi nella creazione del dispositivo, lo ritroveremo nell’elenco presente nel tab Device Manager. Possiamo avviarlo premendo la freccia relativa:

Import settings

Il dispositivo farà il boot iniziale, come un vero dispositivo. Quando finalmente Android sarà caricato nell’emulatore, potremo andare ad avviare la nostra app premendo la freccia verde in alto:

Import settings

Dopo un po’ vedremo spuntare la nostra applicazione nel dispositivo virtuale, e potremo interagire con la stessa per testarla.

Utilizzo di un dispositivo Fisico

Durante il corso di Applicazioni mobili: Sviluppo applicazioni mobili potrebbero esser messi a disposizione alcuni tablet o telefoni Android, oppure potreste decidere di utilizzare un vostro dispositivo al posto dell’emulatore. Vediamo come fare.

Prima di poter collegare Android Studio a un dispositivo Android è necessario fare alcune semplici operazioni.

Sul dispositivo, andare in Settings > Developer Options, e abilitare USB Debugging.

Se il menù Developer Options è nascosto, per renderlo visibile andare in Settings > About Phone, e cliccare su Build number per sette volte (Android 4.2 o successivi).

Nelle versioni vecchie di Android (3.2 o precedenti) occorre andare invece in Settings > Applications > Development.

A questo punto è possibile collegare il dispositivo al computer, utilizzando il cavo USB. Sullo schermo del dispositivo comparirà una finestra, in cui si dovrà accettare la chiave RSA del computer per dare il consenso alle attività di debug.

Fatto questo, il dispositivo sarà riconosciuto da Android Studio.

I computer del laboratorio sono già configurati per riconoscere i dispositivi che verranno utilizzati durante il corso, e la maggior parte dei telefoni nuovi; potrebbero non riconoscere altri dispositivi. In caso di necessità per tesi o stage, il vostro relatore può rivolgersi ai tecnici che si occupano del laboratorio.

Ulteriori note

Avviso: External file changes sync may be slow: Project files cannot be watched, are they under a network mount?

I file nelle aree utente sono su un server NFS, e quindi è vero quello che viene indicato nell’avviso.

Questo significa che, se i file del progetto vengono modificati al di fuori di Android Studio, l’IDE ci metterà un po’ ad accorgersene, non sarà istantaneo.

Non dovrebbe rappresentare un problema, perché non dovrebbe esserci necessità di modificare i file del progetto al di fuori di Android Studio.

Modifiche allo script di avvio

Per il laboratorio facciamo una piccola modifica allo script studio.sh, andando a specificare la directory per i file temporanei. Questo viene fatto modificando la linea con VM_OPTIONS="":

  VM_OPTIONS="-Djava.io.tmpdir=/var/tmp/${USER}/"

Script di avvio per il laboratorio

Per dare ad Android Studio l’illusione di poter scrivere nella directory dell’SDK, lo script di avvio crea un filesystem con Copy-on-Write in /local/tmp/${USER}/opt, che ha come base la directory read-only dell’SDK.

Eventuali file modificati vengono salvati in /local/tmp/${USER}/opt-delta.

Lo script crea poi lo spazio per i dispositivi virtuali in /local/tmp/${USER}/avd.

Infine, dopo aver configurato opportunamente le variabili d’ambiente per lanciare Android Studio con Java 21 e per spiegargli dove cercare l’SDK, viene lanciato il solito script studio.sh dalla directory del programma.

Nota: lo script che crea il filesystem COW lo crea per tutto /opt, non solo per Android SDK. Questo potrebbe esser comodo anche in altri casi.

Problemi di quota disco.

Come abbiamo descritto, se Android Studio non è configurato correttamente può andare a occupare molto spazio disco nell’area utente, portando la persona fuori quota.

Questo può capitare quando:

  • si crea un dispositivo AVD senza aver creato il link alla directory temporanea
  • si configura un percorso errato per l’SDK
  • si cerca di aggiornare l’SDK
  • si cerca di aggiornare Android Studio

In teoria lo script di avvio per il lab dovrebbe risolvere o ridurre di molto queste situazioni. Però ci sono altri file che Android Studio salva comunque nell’area dell’utente:

  • i progetti
  • i file necessari per Gradle
  • gli indici

In caso di problemi è possibile fare riferimento alla pagina relativa alla quota disco, in cui sono anche indicate le procedure da seguire per rimediare.

Installare l’SDK nella propria area

In teoria utilizzando lo script di avvio creato per il laboratorio non dovrebbe più esser necessario installare l’SDK nella propria area utente.

Lasciamo però queste indicazioni, casomai potessero essere utili in futuro per casi non previsti.

Se la nuova versione di Android Studio proprio non ne vuol sapere di avviarsi e si lamenta di avere l’SDK non aggiornato o corrotto, l’unica soluzione per poter lavorare consiste nel sacrificare un po’ di spazio della propria quota disco per poter installare un SDK minimo.

Per poterlo fare occorre resettare la variabile d’ambiente ANDROID_HOME prima di lanciare Android Studio:

  unset ANDROID_HOME
  /opt/android-studio/bin/studio.sh

Al momento di installare l’SDK scegliere Custom.

Se si utilizza un dispositivo fisico, nell’elenco dei componenti da installare è possibile escludere l’immagine per i dispositivi virtuali, risparmiando così circa 1.5 GB di spazio disco.