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ć. Cel odzwierciedla platformę docelową, dla której tworzysz. Aby zidentyfikować cel do zbudowania, użyj polecenia lunch
, po którym następuje ciąg znaków reprezentujący cel. Na przykład:
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 być zgodna z Twoim własnym formatem dla Twojego urządzenia, ale format używany przez Google w swoich urządzeniach 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 (nazwa kodowa), taki jak
x86_64_phone
lubhusky
, czyli nazwa kodowa Pixela 8 pro. Listę nazw kodowych urządzeń Google znajdziesz w artykule Nazwy kodowe urządzeń .
-
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.
Jeśli uruchomisz lunch
bez żadnych argumentów, zostanie wyświetlona lista typowych celów. Możesz także utworzyć własne ciągi docelowe, łącząc elementy ciągu docelowego, korzystając z informacji na tej stronie i nazw kodowych reprezentujących konkretny sprzęt Google w sekcji Nazwy kodowe urządzeń .
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
============================================
Dane wyjściowe twojej kompilacji pojawią się w ` $OUT_DIR . Jeśli budujesz różne cele, każda kompilacja celu pojawia się w $OUT_DIR .
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.