Articles

Creazione di un ambiente di compilazione

Questa sezione descrive come impostare l’ambiente di lavoro locale per creare i file di origine Android. È necessario utilizzare Linux o macOS; costruzione sotto Windows non è attualmente supportato.

Per una panoramica dell’intero processo di revisione e aggiornamento del codice, vedere Vita di una patch.

Scelta di un ramo

Alcuni requisiti per l’ambiente di compilazione sono determinati dalla versione del codice sorgente che si intende compilare. Per un elenco completo dei rami disponibili, vedere Build Numbers. È inoltre possibile scegliere di scaricare e creare il codice sorgente più recente (chiamato master), nel qual caso è sufficiente omettere la specifica del ramo quando si inizializza il repository.

Dopo aver selezionato un ramo, seguire le istruzioni appropriate di seguito per impostare l’ambiente di compilazione.

Impostazione di un buildenvironment Linux

Queste istruzioni si applicano a tutti i rami, inclusomaster.

La build Android viene regolarmente testata internamente su Ubuntu LTS (14.04) e Debian testing. La maggior parte delle altre distribuzioni dovrebbe avere gli strumenti di compilazione necessari disponibili.

Per Pan di zenzero (2.3 .x) e versioni successive, incluso il ramomaster, è richiesto un ambiente a 64 bit. Le versioni precedenti possono essere compilate su sistemi a 32 bit.

Installazione dei pacchetti richiesti (Ubuntu 18.04)

È necessaria una versione a 64 bit di Ubuntu.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Installazione dei pacchetti richiesti(Ubuntu 14.04)

È necessaria una versione a 64 bit di Ubuntu (14.04 è consigliata).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Installazione dei pacchetti richiesti (Ubuntu 12.04)

È possibile utilizzare Ubuntu 12.04 per costruire versioni precedenti di Android. La versione 12.04 non è supportata su master o versioni recenti.

L’installazione dei pacchetti richiesti (Ubuntu 10.04-11.10)

La creazione su Ubuntu 10.04-11.10 non è più supportata, ma può essere utile per la creazione di versioni precedenti di AOSP.

sudo apt-get install git 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 python-markdown libxml2-utils xsltproc

Su Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

Su Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Configurazione dell’accesso USB

Installa un set predefinito gestito dalla comunità di udev regole per tutti i dispositivi Android seguendo le istruzioni per impostare un dispositivo per lo sviluppo.

Utilizzando una directory di output separata

Per impostazione predefinita, l’output di ogni build viene memorizzato nella sottodirectoryout/ dell’albero dei sorgenti corrispondente.

Su alcune macchine con più dispositivi di archiviazione, le build sono più veloci quando si memorizzano i file di origine e l’output su volumi separati. Per prestazioni aggiuntive, l’output può essere memorizzato su un file system ottimizzato per la velocità invece di crash robustezza, perché tutti i file possono essere rigenerati se il file system è danneggiato.

Per impostarlo, esportare la variabileOUT_DIR_COMMON_BASE in modo che punti alla posizione in cui verranno memorizzate le directory di output.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

La directory di output per ogni albero sorgente separato prende il nome dalla directory che contiene l’albero dei sorgenti. Per esempio, se si dispone di origine alberi /source/master1 e /source/master2 e se OUT_DIR_COMMON_BASE è impostato su /output la directory di output sono: /output/master1 e /output/master2.

Evita di avere più alberi di origine memorizzati in directory con lo stesso nome, poiché gli alberi di origine finirebbero per condividere una directory di output, con risultati imprevedibili. Questo è supportato solo su Jelly Bean (4.1) e versioni successive, incluso il ramo master.

Impostazione di un ambiente di compilazione macOS

In un’installazione predefinita, macOS viene eseguito su un file system case-preserving ma case-insensitive. Questo tipo di file system non è supportato da Git e fa sì che alcuni comandi Git (come git status) si comportino in modo anomalo. Per questo motivo, si consiglia di lavorare sempre con i file di origine AOSP su un file system case-sensitive. Questo può essere fatto abbastanza facilmente usando un’immagine del disco, discussa di seguito.

Quando è disponibile il file system corretto, creare il ramo master in un moderno ambiente macOS è semplice. I rami precedenti richiedono alcuni strumenti e SDK aggiuntivi.

Creazione di un disco sensibile alle maiuscole e minuscole

È possibile creare un file system sensibile alle maiuscole e minuscole all’interno dell’ambiente macOS esistente utilizzando un’immagine disco. Per creare l’immagine, avviare Utility disco e selezionare Nuova immagine. Una dimensione di 250 GB è il minimo per completare la build; più spazio è meglio per la crescita futura. Utilizzando immagini sparse consente di risparmiare spazio, consentendo la crescita, se necessario. Selezionare maiuscole e minuscole, journaled come formato del volume.

È anche possibile creare il file system da una shell con il seguente comando:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage

Questo crea un file .dmg.sparseimage che, una volta montato, funge da unità con la formattazione richiesta per lo sviluppo di Android.

Se è necessario un volume più grande in seguito, è possibile ridimensionare l’immagine sparsa con il seguente comando:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

Per un’immagine disco denominata android.dmg.sparseimagememorizzata nella directory home, è possibile aggiungere funzioni di supporto a ~/.bash_profile :

  • Per montare l’immagine quando si esegue mountAndroid
    # mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
  • Per smontarlo quando si esegue umountAndroid
    # unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }

Dopo che hai montato il android volume, è di fare tutto il vostro lavoro. Puoi espellerlo (smontarlo) proprio come faresti con un’unità esterna.

Installazione di Xcode e altri pacchetti

  1. Installare gli strumenti della riga di comando Xcode:
    xcode-select --install

    Per le versioni precedenti di macOS (10.8 o versioni successive), è necessario installare Xcode dal sito degli sviluppatori Apple. Se non sei registrato come sviluppatore Apple, devi creare un ID Apple da scaricare.

  2. Installa MacPorts o Homebrew per la gestione dei pacchetti.
  3. Assicurarsi che la directory associato è nel vostro percorso all’interno di un ~/.bash_profile file:
    1. MacPorts – /opt/local/bin deve apparire prima di /usr/bin
      export PATH=/opt/local/bin:$PATH
    2. Homebrew – /usr/local/bin
      export PATH=/usr/local/bin:$PATH
  4. Per MacPorts, problema:
    POSIXLY_CORRECT=1 sudo port install git gnupg
  5. Per Homebrew, problema:
    brew install git gnupg2

Impostazione di un limite di descrittore di file

Su macOS, il limite predefinito per il numero di descrittori di file aperti simultanei è troppo basso e un processo di compilazione altamente parallelo può superare questo limite. Per aumentare il cap, aggiungi le seguenti righe al tuo ~/.bash_profile:

# set the number of open files to be 1024ulimit -S -n 1024

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *