Articles

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

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

  2. zainstaluj MacPorts lub Homebrew do zarządzania pakietami.
  3. upewnij się, że powiązany katalog znajduje się w twojej ścieżce w~/.bash_profile plik:
    1. MacPorts – /opt/local/bin musi pojawić się przed/usr/bin
      export PATH=/opt/local/bin:$PATH
    2. homebrew – /usr/local/bin
      export PATH=/usr/local/bin:$PATH
  4. dla macports, Issue:
    POSIXLY_CORRECT=1 sudo port install git gnupg
  5. 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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *