Zbuduj Androida

Postępuj zgodnie z instrukcjami na tej stronie, aby zbudować system Android.

Skonfiguruj środowisko kompilacji

Z katalogu roboczego pobierz skrypt envsetup.sh , aby skonfigurować środowisko kompilacji:

$ source build/envsetup.sh

Ten skrypt importuje kilka poleceń, które umożliwiają pracę z kodem źródłowym Androida, w tym polecenia używane na tej stronie. Aby wyświetlić źródło skryptu, zobacz platform/build/envsetup.sh . Aby wyświetlić wbudowaną pomoc, wpisz hmm .

Wybierz cel

Przed zbudowaniem Androida musisz określić cel, który chcesz zbudować. Aby zidentyfikować cel do zbudowania, użyj polecenia lunch , po którym następuje cel , który identyfikuje docelowy produkt i kompilację:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Zobacz bieżący cel

Aby zobaczyć aktualne ustawienia lunchu, uruchom:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Ciąg reprezentujący cel ma następujący format:

lunch product_name-release-build_variant

Składniki tego ciągu to:

  • product_name to nazwa produktu, który chcesz zbudować, na przykład aosp_cf_x86_64_phone lub aosp_husky . Konkretna product_name może mieć Twój własny format, ale format używany przez Google zawiera następujące elementy:

    • aosp odnosi się do platformy Android Open Source.
    • (opcjonalnie) cf jest dołączone, gdy cel ma działać w emulatorze mątwy.
    • architektura i sprzęt, taki jak x86_64_phone lub husky (Pixel 8 pro).
  • release jest ustawiona na trunk-staging .

  • Część ciągu znaków build_variant może mieć jedną z trzech wartości z poniższej tabeli:

    build_variant Opis
    user Ten wariant kompilacji zapewnia ograniczony dostęp bezpieczeństwa i nadaje się do zastosowań produkcyjnych.
    userdebug Ten wariant kompilacji pomaga twórcom urządzeń zrozumieć wydajność i możliwości wydań w fazie rozwoju. Podczas programowania przy użyciu kompilacji userdebug postępuj zgodnie z wytycznymi dotyczącymi userdebug .
    inż Ten wariant kompilacji zapewnia krótszy czas kompilacji i najlepiej nadaje się do codziennego programowania, jeśli nie zależy Ci na wydajności i mocy.

Zbuduj kod

Uruchom następujące polecenie, aby zbudować swój cel. W zależności od specyfikacji Twojej stacji roboczej, pierwsza kompilacja może zająć od mniej niż godziny do kilku godzin. Kolejne kompilacje zajmują znacznie mniej czasu.

$ m

Pierwszym wynikiem, który powinieneś zobaczyć, jest streszczenie środowiska docelowego i kompilacji:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

Polecenie m jest tworzone od góry drzewa, więc można m uruchamiać z podkatalogów. Jeśli masz ustawioną zmienną środowiskową TOP , polecenie m używa jej. Jeśli TOP nie jest ustawione, polecenie m przegląda drzewo w bieżącym katalogu, próbując znaleźć początek drzewa.

Komenda m może obsługiwać zadania równoległe z argumentem -jN . Jeśli nie podasz argumentu -j , system kompilacji automatycznie wybierze liczbę zadań równoległych, którą uzna za optymalną dla twojego systemu.

Możesz zbudować określone moduły zamiast pełnego obrazu urządzenia, wypisując nazwy modułów w linii poleceń m . Ponadto polecenie m udostępnia pewne pseudo cele, zwane celami . Na przykład m nothing niczego nie buduje, ale analizuje i sprawdza strukturę kompilacji. Aby wyświetlić listę prawidłowych celów, wpisz m help .

Rozwiązywanie problemów z błędami kompilacji (8.0 lub wcześniejsza)

Jeśli budujesz AOSP 8 lub wcześniejszy, m może przerwać działanie, gdy napotka problem z twoją wersją Java. Na przykład możesz otrzymać następujący komunikat:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

Oto prawdopodobne przyczyny i rozwiązania:

  • Nie udało się zainstalować prawidłowego pakietu JDK, jak określono w sekcjach JDK w sekcji Konfiguracja do programowania AOSP (2.3–8.0) .
  • Na Twojej ścieżce pojawia się inny, wcześniej zainstalowany pakiet JDK. Dodaj poprawny pakiet JDK na początek ścieżki lub usuń problematyczny pakiet JDK.