Konfigurowanie środowiska do tworzenia aplikacji na AOSP (wersja 9.0 lub nowsza)

Zanim pobierzesz i skompilujesz najnowszą gałąź Androida (android17-release), upewnij się, że Twój sprzęt spełnia wymagania i że wymagane oprogramowanie jest prawidłowo zainstalowane. Musisz też znać te terminy:

Git
Git to bezpłatny, rozproszony system kontroli wersji typu open source. Android używa Gita do operacji lokalnych, takich jak tworzenie gałęzi, zatwierdzanie zmian, porównywanie i edytowanie. Aby dowiedzieć się więcej o Gicie, zapoznaj się z dokumentacją Gita.
Repo
Repo to otoka Pythona wokół Gita, która upraszcza wykonywanie złożonych operacji w wielu repozytoriach Git. Repo nie zastępuje Gita we wszystkich operacjach kontroli wersji, tylko ułatwia wykonywanie złożonych operacji Git. Repo używa plików manifestu do agregowania projektów Git w superprojekcie Androida.
Plik manifestu
Plik manifestu to plik XML określający, gdzie w drzewie źródłowym AOSP znajdują się różne projekty Git w źródle Androida.

Spełnianie wymagań sprzętowych

Stacja robocza dewelopera powinna spełniać te wymagania sprzętowe lub je przekraczać:

  • System 64-bitowy x86.

  • Co najmniej 400 GB wolnego miejsca na dysku na pobranie i skompilowanie kodu (250 GB na pobranie + 150 GB na kompilację).

  • Co najmniej 64 GB pamięci RAM. Google używa do kompilowania Androida maszyn z 72 rdzeniami i 64 GB pamięci RAM. Przy takiej konfiguracji sprzętowej pełna kompilacja Androida trwa około 40 minut, a kompilacja przyrostowa – tylko kilka minut. Dla porównania, pełna kompilacja na maszynie z 6 rdzeniami i 64 GB pamięci RAM trwa około 6 godzin.

Spełnianie wymagań systemowych

Na stacji roboczej dewelopera musi być zainstalowana dowolna 64-bitowa dystrybucja Linuksa z biblioteką GNU C Library (glibc) w wersji 2.17 lub nowszej.

Instalowanie wymaganych pakietów

Aby skompilować Androida w wersji 11 lub nowszej, musisz używać Ubuntu 18.04 lub nowszego. Aby zainstalować wymagane pakiety w Ubuntu 18.04 lub nowszym, uruchom to polecenie:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

To polecenie instaluje m.in. Gita, który służy do pobierania źródła AOSP.

Instalowanie wymaganego oprogramowania

Zanim zaczniesz korzystać z AOSP, musisz zainstalować OpenJDK, Make, Pythona 3 i Repo. Najnowsza gałąź Androida zawiera wstępnie skompilowane wersje OpenJDK, Make i Pythona 3, więc nie trzeba wykonywać dodatkowych czynności instalacyjnych. W następnej sekcji dowiesz się, jak zainstalować Repo.

Instalowanie Repo

Aby zainstalować Repo:

  1. Pobierz aktualne informacje o pakietach:

    sudo apt-get update
  2. Uruchom to polecenie, aby zainstalować program uruchamiający Repo:

    sudo apt-get install repo

    Program uruchamiający Repo udostępnia skrypt Pythona, który inicjuje pobieranie i pobiera pełne narzędzie Repo.

    Jeśli operacja się powiedzie, przejdź do kroku 4.

  3. (Opcjonalnie) Ręcznie zainstaluj Repo za pomocą tych poleceń:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo

    Pierwsze 3 polecenia konfigurują plik tymczasowy, pobierają do niego Repo i sprawdzają, czy podany klucz pasuje do wymaganego klucza. Jeśli te polecenia się powiodą, ostatnie polecenie zainstaluje program uruchamiający Repo.

  4. Sprawdź wersję programu uruchamiającego Repo:

    repo version

    Dane wyjściowe powinny wskazywać wersję 2.4 lub nowszą, na przykład:

    repo launcher version 2.45

Ustawianie alternatywnego katalogu wyjściowego

Domyślnie dane wyjściowe każdej kompilacji są przechowywane w podkatalogu out/ pasującego drzewa źródłowego. Możesz zastąpić ten katalog, eksportując zmienną środowiskową OUT_DIR. Jeśli na przykład chcesz przechowywać dane wyjściowe na innym dysku, możesz wskazać ten dysk w zmiennej OUT_DIR:

export OUT_DIR=my_other_drive

Co dalej?