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
lubaosp_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
lubhusky
(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.