Articles

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

  1. 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.

  2. installeer MacPorts of Homebrew voor pakketbeheer.
  3. zorg Ervoor dat de bijbehorende map in uw weg binnen uw ~/.bash_profile bestand:
    1. MacPorts – /opt/local/bin moet verschijnen voor /usr/bin
      export PATH=/opt/local/bin:$PATH
    2. Homebrew – /usr/local/bin
      export PATH=/usr/local/bin:$PATH
  4. Voor MacPorts, uitgave:
    POSIXLY_CORRECT=1 sudo port install git gnupg
  5. 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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *