tworzenie środowiska kompilacji
w tej sekcji opisano, jak skonfigurować lokalne środowisko pracy do tworzenia plików źródłowych Androida. Musisz używać Linuksa lub macOS; budowanie pod Windows nie jest obecnie obsługiwane.
aby zapoznać się z całym procesem weryfikacji i aktualizacji kodu, zobacz Life of a Patch.
wybór gałęzi
niektóre wymagania dla środowiska kompilacji są określone przez wersję kodu źródłowego, którą zamierzasz skompilować. Pełna lista dostępnych gałęzi znajduje się w sekcji Numery kompilacji. Możesz również pobrać i zbudować najnowszy kod źródłowy (o nazwie master
), w którym to przypadku po prostu pomijasz specyfikację gałęzi podczas inicjalizacji repozytorium.
Po wybraniu gałęzi, postępuj zgodnie z odpowiednimi instrukcjami poniżej, aby skonfigurować środowisko kompilacji.
Konfigurowanie środowiska Linux buildenvironment
te instrukcje dotyczą wszystkich gałęzi, w tymmaster
.
Android build jest rutynowo testowany w domu na Ubuntu LTS (14.04) i Debian testing. Większość innych dystrybucji powinna mieć dostępne wymagane narzędzia do budowania.
Dla Piernika (2.3.x) i nowsze wersje, w tym master
, wymagane jest środowisko 64-bitowe. Starsze wersje mogą być kompilowane na systemach 32-bitowych.
instalacja wymaganych pakietów(Ubuntu 18.04)
potrzebujesz 64-bitowej wersji 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
instalacja wymaganych pakietów(Ubuntu 14.04)
potrzebujesz 64-bitowej wersji Ubuntu (zalecana jest wersja 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
instalacja wymaganych pakietów (Ubuntu 12.04)
Możesz użyć Ubuntu 12.04 do budowania starszych wersji Androida. Wersja 12.04 nie jest obsługiwana w master
lub w ostatnich wydaniach.
instalacja wymaganych pakietów (Ubuntu 10.04-11.10)
budowanie na Ubuntu 10.04-11.10 nie jest już obsługiwane, ale może być przydatne do budowania starszych wersji 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
na Ubuntu 10.10:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
na Ubuntu 11.10:
sudo apt-get install libx11-dev:i386
Konfigurowanie dostępu USB
zainstaluj utrzymywany przez społeczność domyślny zestaw regułudev
dla wszystkich urządzeń z systemem Android, postępując zgodnie z instrukcjami, aby skonfigurować urządzenie do programowania.
używając oddzielnego katalogu wyjściowego
domyślnie, dane wyjściowe każdej kompilacji są przechowywane wout/
podkatalogu pasującego drzewa źródeł.
na niektórych komputerach z wieloma urządzeniami pamięci masowej Kompilacje są szybsze, gdy przechowuje się pliki źródłowe i dane wyjściowe na oddzielnych woluminach. Aby uzyskać dodatkową wydajność, Dane wyjściowe mogą być przechowywane w systemie plików zoptymalizowanym pod kątem szybkości, a nie odporności na awarie, ponieważ wszystkie pliki mogą być regenerowane, jeśli system plików jest uszkodzony.
aby to skonfigurować, wyeksportuj zmiennąOUT_DIR_COMMON_BASE
, aby wskazać lokalizację, w której będą przechowywane Twoje katalogi wyjściowe.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
katalog wyjściowy dla każdego osobnego drzewa źródłowego jest nazwany po katalogu, w którym znajduje się drzewo źródłowe. Na przykład, jeśli masz drzewa źródłowe /source/master1
I /source/master2
I jeśli OUT_DIR_COMMON_BASE
jest ustawione na /output
, katalogi wyjściowe to /output/master1
I /output/master2
.
unikaj przechowywania wielu drzew źródłowych w katalogach o tej samej nazwie, ponieważ drzewa źródłowe mogłyby dzielić katalog wyjściowy, z nieprzewidywalnymi wynikami. Jest to obsługiwane tylko w Jelly Bean (4.1) i nowszych, w tym w gałęzi master
.
Konfigurowanie środowiska kompilacji macOS
w domyślnej instalacji macOS działa na systemie plików z zachowaniem wielkości liter, ale nie uwzględnia wielkości liter. Ten typ systemu plików nie jest obsługiwany przez Git i powoduje, że niektóre komendy Git (takie jak git status
) zachowują się nieprawidłowo. Z tego powodu zalecamy, aby zawsze pracować z plikami źródłowymi AOSP na systemie plików uwzględniającym wielkość liter. Można to zrobić dość łatwo za pomocą obrazu dysku, omówionego poniżej.
gdy dostępny jest odpowiedni system plików, budowanie gałęzimaster
w nowoczesnym środowisku macOS jest proste. Wcześniejsze gałęzie wymagają dodatkowych narzędzi i zestawów SDK.
tworzenie obrazu dysku z uwzględnieniem wielkości liter
możesz utworzyć system plików z uwzględnieniem wielkości liter w istniejącym środowisku macOS przy użyciu obrazu dysku. Aby utworzyć obraz, Uruchom Narzędzie dyskowe i wybierz nowy obraz. Rozmiar 250 GB to minimum do ukończenia kompilacji; więcej miejsca jest najlepsze dla przyszłego rozwoju. Korzystanie z rzadkich obrazów oszczędza miejsce, umożliwiając jednocześnie wzrost w razie potrzeby. Wybierz rozróżnianie wielkości liter i dziennik jako format woluminu.
Możesz również utworzyć system plików z powłoki za pomocą następującego polecenia:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
tworzy to plik .dmg.sparseimage
, który po zamontowaniu działa jak Dysk z wymaganym formatowaniem dla Androida.
Jeśli później potrzebujesz większego woluminu, możesz zmienić rozmiar rzadkiego obrazu za pomocą następującego polecenia:
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
dla obrazu dysku o nazwieandroid.dmg.sparseimage
przechowywanego w katalogu domowym, możesz dodać funkcje pomocnicze do ~/.bash_profile
:
- aby zamontować obraz podczas wykonywania
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- aby odmontować go podczas wykonywania
umountAndroid
# unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }
Po zamontowaniu głośności android
wykonujesz tam całą swoją pracę. Możesz go wysunąć (odmontować) tak samo, jak dysk zewnętrzny.
instalacja Xcode i innych pakietów
- Zainstaluj narzędzia wiersza poleceń Xcode:
xcode-select --install
w przypadku starszych wersji systemu macOS (10.8 lub nowszych) musisz zainstalować Xcode ze strony programisty Apple. Jeśli nie jesteś zarejestrowany jako programista Apple, musisz utworzyć Apple ID, aby pobrać.
- zainstaluj MacPorts lub Homebrew do zarządzania pakietami.
- upewnij się, że powiązany katalog znajduje się w twojej ścieżce w
~/.bash_profile
plik:- MacPorts –
/opt/local/bin
musi pojawić się przed/usr/bin
export PATH=/opt/local/bin:$PATH
- homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts –
- dla macports, Issue:
POSIXLY_CORRECT=1 sudo port install git gnupg
- Dla Homebrew, Issue:
brew install git gnupg2
ustawienie limitu deskryptorów plików
w systemie macOS domyślne ograniczenie liczby jednocześnie otwartych deskryptorów plików jest zbyt niskie, a wysoce równoległy proces kompilacji może go przekroczyć. Aby zwiększyć limit, dodaj następujące linie do ~/.bash_profile
:
# set the number of open files to be 1024ulimit -S -n 1024