Ustanawianie środowiska budowania

W tej sekcji opisano, jak skonfigurować lokalne środowisko pracy do tworzenia plików źródłowych systemu Android. Musisz używać Linuksa; budowanie w systemie MacOS lub Windows nie jest obsługiwane. Pamiętaj również o ważnej zmianie w pliku binarnym /usr/bin/python .

Aby zapoznać się z omówieniem całego procesu przeglądu i aktualizacji kodu, zobacz Życie poprawki .

Wybór oddziału

Niektóre wymagania dotyczące środowiska kompilacji są określane przez wersję kodu źródłowego, który planujesz skompilować. Aby uzyskać pełną listę dostępnych gałęzi, zobacz Numery kompilacji . Możesz także pobrać i zbudować najnowszy kod źródłowy (nazywany master ), w takim przypadku po prostu pomijasz specyfikację gałęzi podczas inicjalizacji repozytorium.

Po wybraniu oddziału postępuj zgodnie z odpowiednimi instrukcjami poniżej, aby skonfigurować środowisko kompilacji.

Konfigurowanie środowiska kompilacji Linux

Te instrukcje dotyczą wszystkich gałęzi, w tym master .

Kompilacja Androida jest rutynowo testowana w domu na Ubuntu LTS (14.04) i testach Debiana. Większość innych dystrybucji powinna mieć dostępne wymagane narzędzia do kompilacji.

W przypadku wersji Gingerbread (2.3.x) i wyższych, w tym gałęzi master , wymagane jest środowisko 64-bitowe. Starsze wersje można kompilować na systemach 32-bitowych.

Instalowanie 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 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Instalowanie 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 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Instalowanie wymaganych pakietów (Ubuntu 12.04)

Możesz użyć Ubuntu 12.04 do tworzenia starszych wersji Androida. Wersja 12.04 nie jest obsługiwana w wersjach master ani najnowszych.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Instalowanie wymaganych pakietów (Ubuntu 10.04-11.10)

Tworzenie 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

W systemie Ubuntu 10.10:

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

W systemie 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 w artykule Konfigurowanie urządzenia do programowania .

Korzystanie z oddzielnego katalogu wyjściowego

Domyślnie dane wyjściowe każdej kompilacji są przechowywane w podkatalogu out/ odpowiedniego drzewa źródłowego. Możesz to zmienić, eksportując zmienną środowiskową OUT_DIR . Na przykład:

export OUT_DIR=out_mytarget

Spowoduje to, że dane wyjściowe kompilacji zostaną zapisane w podkatalogu out_mytarget/ drzewa źródłowego. W przypadku korzystania z tego samego drzewa źródłowego do budowania dla wielu celów zaleca się użycie oddzielnego OUT_DIR dla każdego celu.

Na niektórych komputerach z wieloma urządzeniami pamięci masowej kompilacje są szybsze w przypadku przechowywania plików źródłowych i danych wyjściowych na osobnych woluminach. Aby uzyskać dodatkową wydajność, dane wyjściowe można przechowywać w systemie plików zoptymalizowanym pod kątem szybkości zamiast odporności na awarie, ponieważ wszystkie pliki można zregenerować, jeśli system plików jest uszkodzony.

Aby to skonfigurować, wyeksportuj zmienną OUT_DIR_COMMON_BASE , aby wskazywała lokalizację, w której będą przechowywane katalogi wyjściowe.

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

Katalog wyjściowy dla każdego oddzielnego drzewa źródłowego nosi nazwę katalogu zawierającego drzewo źródłowe. Na przykład, jeśli masz drzewa /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 skończyłyby na współdzieleniu katalogu wyjściowego, z nieprzewidywalnymi skutkami. Jest to obsługiwane tylko w Jelly Bean (4.1) i nowszych, w tym w gałęzi master .

Dalej: Pobierz źródło

Twoje środowisko kompilacji jest gotowe! Przejdź do pobierania źródła .