Een Build Environment instellen
Deze sectie beschrijft hoe u uw lokale werkomgeving kunt instellen om de Android-bronbestanden te bouwen. U moet Linux of macOS gebruiken; Bouwen onder Windows wordt momenteel niet ondersteund.
voor een overzicht van het volledige proces voor code-review en code-update, Zie Life of a Patch.
het kiezen van een branch
sommige vereisten voor de bouwomgeving worden bepaald door de versie van de broncode die u wilt compileren. Zie Build Numbers voor een volledige lijst met beschikbare branches. Je kunt er ook voor kiezen om de nieuwste broncode te downloaden en te bouwen (genaamd master
), In welk geval je gewoon de branch specificatie weglaat wanneer je de repository initialiseert.
na het selecteren van een branch, volg de juiste instructies hieronder om uw bouwomgeving in te stellen.
het opzetten van een Linux buildenvironment
deze instructies zijn van toepassing op alle branches, inclusief master
.
de Android build wordt routinematig in huis getest op Ubuntu LTS (14.04) en Debian testen. De meeste andere distributies zouden de benodigde build tools beschikbaar moeten hebben.
voor peperkoek (2.3.x) en hogere versies, Inclusief demaster
branch, is een 64-bit omgeving vereist. Oudere versies kunnen worden gecompileerd op 32-bits systemen.
vereiste pakketten installeren(Ubuntu 18.04)
u hebt een 64-bits versie van Ubuntu nodig.
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
vereiste pakketten installeren(Ubuntu 14.04)
u hebt een 64-bits versie van Ubuntu nodig (14.04 wordt aanbevolen).
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
vereiste pakketten installeren (Ubuntu 12.04)
U kunt Ubuntu 12.04 gebruiken om oudere versies van Android te bouwen. Versie 12.04 wordt niet ondersteund op master
of recente releases.
het installeren van vereiste pakketten (Ubuntu 10.04-11.10)
bouwen op Ubuntu 10.04-11.10 wordt niet langer ondersteund, maar kan nuttig zijn voor het bouwen van oudere versies van 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
Op Ubuntu 10.10:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
Op Ubuntu 11.10:
sudo apt-get install libx11-dev:i386
USB-toegang configureren
Installeer een door de gemeenschap onderhouden standaardset van udev
regels voor alle Android-apparaten door de instructies te volgen om een apparaat voor ontwikkeling in te stellen.
gebruikmakend van een aparte outputdirectory
standaard wordt de uitvoer van elke build opgeslagen in de out/
subdirectory van de overeenkomende bronstructuur.
Op sommige machines met meerdere opslagapparaten zijn builds sneller bij het opslaan van de bronbestanden en de uitvoer op afzonderlijke volumes. Voor extra prestaties kan de uitvoer worden opgeslagen op een bestandssysteem dat is geoptimaliseerd voor snelheid in plaats van crash robuustheid, omdat alle bestanden kunnen worden geregenereerd als het bestandssysteem is beschadigd.
om dit in te stellen, exporteert u de variabele OUT_DIR_COMMON_BASE
om te wijzen naar de locatie waar uw uitvoermappen zullen worden opgeslagen.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
de uitvoermap voor elke afzonderlijke bronboom is vernoemd naar de map die de bronboom bevat. Als u bijvoorbeeld bronbomen hebt /source/master1
en /source/master2
en als OUT_DIR_COMMON_BASE
is ingesteld op /output
, zijn de uitvoermappen /output/master1
en /output/master2
.
vermijd het hebben van meerdere bronbomen opgeslagen in mappen met dezelfde naam, omdat de bronbomen uiteindelijk een uitvoermap zouden delen, met onvoorspelbare resultaten. Dit wordt alleen ondersteund op Jelly Bean (4.1) en hoger, inclusief de master
branch.
het opzetten van een macOS build environment
in een standaard installatie draait macOS op een bestandssysteem dat hoofdlettergevoelig is, maar niet hoofdlettergevoelig is. Dit type bestandssysteem wordt niet ondersteund door Git en zorgt ervoor dat sommige Git commando ‘ s (zoals git status
) zich abnormaal gedragen. Daarom raden we je aan om altijd met de AOSP bronbestanden te werken op een hoofdlettergevoelig bestandssysteem. Dit kan vrij eenvoudig worden gedaan met behulp van een disk image, hieronder besproken.
wanneer het juiste bestandssysteem beschikbaar is, is het bouwen van demaster
branch in een moderne macOS-omgeving eenvoudig. Eerdere branches vereisen een aantal extra tools en SDK ‘ s.
een hoofdlettergevoelige diskimage aanmaken
u kunt een hoofdlettergevoelig bestandssysteem maken binnen uw bestaande macOS-omgeving met behulp van een schijfimage. Als u de image wilt maken, start u Schijfhulpprogramma en selecteert u nieuwe Image. Een grootte van 250 GB is het minimum om de bouw te voltooien; meer ruimte is het beste voor toekomstige groei. Het gebruik van schaarse beelden bespaart ruimte en laat groei toe als dat nodig is. Selecteer hoofdlettergevoelig, journaled als het volume formaat.
u kunt het bestandssysteem ook maken vanuit een shell met het volgende commando:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
Dit maakt een .dmg.sparseimage
bestand dat, wanneer aangekoppeld, fungeert als een station met de vereiste opmaak voor Android ontwikkeling.
Als u later een groter volume nodig hebt, kunt u de grootte van de schaarse afbeelding wijzigen met het volgende commando:
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
voor een schijfimage met de naam android.dmg.sparseimage
opgeslagen in uw persoonlijke map, kunt u hulpfuncties toevoegen aan ~/.bash_profile
:
- de afbeelding aankoppelen wanneer u
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- unmount wanneer u
umountAndroid
# unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }
nadat u het android
volume hebt gemount, doet u al uw werk daar. U kunt het uitwerpen (ontkoppelen) net zoals u een externe schijf zou doen.
Xcode en andere pakketten installeren
- installeer de opdrachtregelprogramma ‘ s voor Xcode:
xcode-select --install
voor oudere versies van macOS (10.8 of lager) moet u Xcode installeren vanaf de Apple developer site. Als u niet bent geregistreerd als Apple developer, moet u een Apple ID maken om te downloaden.
- installeer MacPorts of Homebrew voor pakketbeheer.
- zorg Ervoor dat de bijbehorende map in uw weg binnen uw
~/.bash_profile
bestand:- MacPorts –
/opt/local/bin
moet verschijnen voor/usr/bin
export PATH=/opt/local/bin:$PATH
- Homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts –
- Voor MacPorts, uitgave:
POSIXLY_CORRECT=1 sudo port install git gnupg
- Voor Homebrew probleem:
brew install git gnupg2
het instellen van een bestandsdescriptorlimiet
op macOS is de standaardlimiet voor het aantal gelijktijdige open bestandsdescriptoren te laag en kan een sterk parallel bouwproces deze limiet overschrijden. Voeg de volgende regels toe aan uw ~/.bash_profile
:
# set the number of open files to be 1024ulimit -S -n 1024