Articles

stabilirea unui mediu de construcție

această secțiune descrie modul de configurare a mediului de lucru local pentru a construi fișierele sursă Android. Trebuie să utilizați Linux sau macOS; construirea sub Windows nu este acceptată în prezent.

pentru o prezentare generală a întregului proces de revizuire a codului și actualizare a codului, consultați durata de viață a unui Patch.

alegerea unei ramuri

unele cerințe pentru mediul de compilare sunt determinate de versiunea codului sursă pe care intenționați să o compilați. Pentru o listă completă a sucursalelor disponibile, consultați construiți numere. De asemenea, puteți alege să descărcați și să construiți cel mai recent cod sursă (numit master), caz în care omiteți pur și simplu specificația sucursalei atunci când inițializați depozitul.

după selectarea unei sucursale, urmați instrucțiunile corespunzătoare de mai jos pentru a configura mediul de construcție.

Configurarea unui Linux buildenvironment

aceste instrucțiuni se aplică tuturor ramurilor, inclusivmaster.

construirea Android este testată în mod obișnuit în casă pe Ubuntu LTS (14.04) și testarea Debian. Majoritatea celorlalte distribuții ar trebui să aibă disponibile instrumentele de construire necesare.

pentru turtă dulce (2.3.X) și versiuni mai mari, inclusiv master ramură, este necesar un mediu pe 64 de biți. Versiunile mai vechi pot fi compilate pe sisteme pe 32 de biți.

instalarea pachetelor necesare(Ubuntu 18.04)

aveți nevoie de o versiune pe 64 de biți a 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

instalarea pachetelor necesare(Ubuntu 14.04)

aveți nevoie de o versiune pe 64 de biți a Ubuntu (se recomandă 14.04).

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

instalarea pachetelor necesare (Ubuntu 12.04)

puteți utiliza Ubuntu 12.04 pentru a construi versiuni mai vechi de Android. Versiunea 12.04 nu este acceptată pemaster sau versiuni recente.

instalarea pachetelor necesare (Ubuntu 10.04-11.10)

construirea pe Ubuntu 10.04-11.10 nu mai este acceptată, dar poate fi utilă pentru construirea de versiuni mai vechi de 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

pe Ubuntu 10.10:

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

pe Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Configurarea accesului USB

Instalați un set implicit menținut de comunitate deudev reguli pentru toate dispozitivele Android urmând instrucțiunile pentru configurarea unui dispozitiv pentru dezvoltare.

folosind un outputdirectory separat

implicit, ieșirea fiecărei compilări este stocată înout/ subdirectorul arborelui sursă de potrivire.

pe unele mașini cu mai multe dispozitive de stocare, construcțiile sunt mai rapide atunci când stochează fișierele sursă și ieșirea pe volume separate. Pentru performanțe suplimentare, ieșirea poate fi stocată pe un sistem de fișiere optimizat pentru viteză în loc de robustețe de avarie, deoarece toate fișierele pot fi regenerate dacă sistemul de fișiere este corupt.

pentru a configura acest lucru, exportați variabilaOUT_DIR_COMMON_BASE pentru a indica locația în care vor fi stocate directoarele de ieșire.

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

directorul de ieșire pentru fiecare arbore sursă separat este numit după directorul care deține arborele sursă. De exemplu, dacă aveți arbori sursă /source/master1 și /source/master2 și dacă OUT_DIR_COMMON_BASE este setat la /output, directoarele de ieșire sunt /output/master1 și /output/master2.

evitați stocarea mai multor arbori sursă în directoare care au același nume, deoarece arborii sursă ar ajunge să partajeze un director de ieșire, cu rezultate imprevizibile. Acest lucru este acceptat numai pe Jelly Bean (4.1) și mai mare, inclusiv master ramură.

Configurarea unui mediu de construire macOS

într-o instalare implicită, macOS rulează pe un sistem de fișiere care păstrează majuscule, dar insensibil la majuscule. Acest tip de sistem de fișiere nu este acceptat de Git și determină unele comenzi Git (cum ar fi git status) să se comporte anormal. Din această cauză, vă recomandăm să lucrați întotdeauna cu fișierele sursă AOSP pe un sistem de fișiere sensibil la majuscule. Acest lucru se poate face destul de ușor folosind o imagine de disc, discutată mai jos.

când este disponibil sistemul de fișiere adecvat, construirea filialeimaster într-un mediu macOS modern este simplă. Ramurile anterioare necesită unele instrumente și SDK-uri suplimentare.

crearea unei imagini de disc sensibile la majuscule

puteți crea un sistem de fișiere sensibile la majuscule în mediul macOS existent utilizând o imagine de disc. Pentru a crea imaginea, lansați Disk Utility și selectați New Image. O dimensiune de 250 GB este minimul pentru a finaliza construcția; mai mult spațiu este cel mai bun pentru creșterea viitoare. Utilizarea imaginilor rare economisește spațiu, permițând în același timp creșterea după cum este necesar. Selectați case sensitive, jurnalizat ca format de volum.

de asemenea, puteți crea sistemul de fișiere dintr-un shell cu următoarea comandă:

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

Acest lucru creează un.dmg.sparseimage fișier care, atunci când este montat, acționează ca o unitate cu formatarea necesară pentru dezvoltarea Android.

dacă aveți nevoie de un volum mai mare mai târziu, puteți redimensiona imaginea rară cu următoarea comandă:

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

pentru o imagine de disc numităandroid.dmg.sparseimage stocată în directorul dvs. de acasă, puteți adăuga funcții de ajutor la~/.bash_profile:

  • pentru a monta imaginea când executațimountAndroid
    # mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
  • pentru a o demonta când executațiumountAndroid
    # unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }

după ce ați montatandroid volumul, faceți toată munca acolo. Îl puteți scoate (demonta) la fel cum ați face o unitate externă.

instalarea Xcode și a altor pachete

  1. Instalați instrumentele liniei de comandă Xcode:
    xcode-select --install

    pentru versiunile mai vechi de macOS (10.8 sau mai mici), trebuie să instalați Xcode de pe site-ul dezvoltatorului Apple. Dacă nu sunteți înregistrat ca dezvoltator Apple, trebuie să creați un ID Apple pentru descărcare.

  2. instalați fie MacPorts, fie Homebrew pentru gestionarea pachetelor.
  3. asigurați – vă că directorul asociat este în calea dvs. în~/.bash_profile fișier:
    1. MacPorts – /opt/local/bin trebuie să apară înainte de/usr/bin
      export PATH=/opt/local/bin:$PATH
    2. homebrew – /usr/local/bin
      export PATH=/usr/local/bin:$PATH
  4. pentru macports, problemă:
    POSIXLY_CORRECT=1 sudo port install git gnupg
  5. Pentru Homebrew, problemă:
    brew install git gnupg2

setarea unei limite de descriptor de fișier

pe macOS, limita implicită a numărului de descriptori simultani de fișiere deschise este prea mică și un proces de construire extrem de paralel poate depăși această limită. Pentru a mări capacul, adăugați următoarele linii la ~/.bash_profile:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *