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ți
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- pentru a o demonta când executați
umountAndroid
# 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
- 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.
- instalați fie MacPorts, fie Homebrew pentru gestionarea pachetelor.
- asigurați – vă că directorul asociat este în calea dvs. în
~/.bash_profile
fișier:- MacPorts –
/opt/local/bin
trebuie să apară înainte de/usr/bin
export PATH=/opt/local/bin:$PATH
- homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts –
- pentru macports, problemă:
POSIXLY_CORRECT=1 sudo port install git gnupg
- 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