Aby skompilować Androida, postępuj zgodnie z instrukcjami na tej stronie.
Konfigurowanie środowiska kompilacji
W katalogu roboczym uruchom skrypt envsetup.sh, aby skonfigurować środowisko kompilacji:
source build/envsetup.shTen 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, otwórz
platform/build/envsetup.sh.
Aby wyświetlić wbudowaną pomoc, wpisz hmm.
Wybieranie celu
Zanim zaczniesz kompilować Androida, musisz określić cel kompilacji. Cel odzwierciedla platformę docelową, na którą kompilujesz. Aby określić cel kompilacji, użyj polecenia lunch i ciągu znaków reprezentującego cel. Przykład:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugPowinien się wyświetlić opis celu i środowiska kompilacji:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================
Ciąg znaków reprezentujący cel ma ten format:
lunch product_name-release_config-build_variantSkładniki tego ciągu znaków to:
product_nameto nazwa produktu, który chcesz skompilować, np.aosp_cf_x86_64_only_phonelubaosp_husky. Twój konkretnyproduct_namemoże mieć własny format, ale format używany przez Google w przypadku swoich urządzeń ma te komponenty:aospodnosi się do projektu Android Open Source Project.- Opcjonalnie, jeśli celem jest uruchomienie w emulatorze Cuttlefish, dodawany jest ciąg znaków
cf. - Nazwa kodowa architektury i sprzętu, np.
x86_64_only_phonelubhusky, która jest nazwą kodową Pixela 8 Pro. Listę nazw kodowych urządzeń Google znajdziesz w artykule Nazwy kodowe urządzeń.
release_configjest ustawiony na konfigurację wersji, np. konfigurację wersji deweloperskiej o nazwieaosp_current. Konfiguracja wersji określa niektóre funkcje i kod, które są ukryte za flagami uruchamiania funkcji i są włączone lub wyłączone w kompilacji. Więcej informacji o konfiguracjach wersji znajdziesz w artykule Ustawianie wartości flag funkcji.Część ciągu znaków
build_variantmoże mieć jedną z 3 wartości w tej tabeli:build_variantOpis userTa wersja kompilacji zapewnia ograniczony dostęp do zabezpieczeń i jest odpowiednia do środowiska produkcyjnego. userdebugTa wersja kompilacji pomaga deweloperom urządzeń zrozumieć wydajność i zużycie energii w wersjach w trakcie opracowywania. Podczas programowania z użyciem kompilacji userdebugpostępuj zgodnie z wytycznymi dotyczącymi kompilacji userdebug.engTa wersja kompilacji ma krótszy czas kompilacji i najlepiej nadaje się do codziennych środowisk programistycznych (gdzie wydajność i zużycie energii są mniej ważne).
Jeśli uruchomisz polecenie lunch bez argumentów, wyświetli się lista typowych celów.lunch Aby utworzyć niestandardowe ciągi znaków celu, połącz elementy ciągu znaków celu z nazwami kodowymi sprzętu. Listę nazw kodowych znajdziesz w artykule Nazwy kodowe urządzeń.
Wyświetlanie bieżącego celu
Aby wyświetlić bieżące ustawienia polecenia lunch, uruchom:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Kompilowanie kodu
Aby skompilować cel, uruchom to polecenie. W zależności od specyfikacji stacji roboczej pierwsza kompilacja może potrwać od niecałej godziny do kilku godzin. Kolejne kompilacje trwają znacznie krócej.
mDane wyjściowe kompilacji pojawiają się w $OUT_DIR. Jeśli skompilujesz różne cele, każda kompilacja celu pojawi się w $OUT_DIR.
Polecenie m kompiluje od góry drzewa, więc możesz je uruchomić z podkatalogów.m Jeśli masz ustawioną zmienną środowiskową TOP, polecenie m jej używa. Jeśli TOP nie jest ustawiona, polecenie m przeszukuje drzewo od bieżącego katalogu, próbując znaleźć jego górę.
Polecenie m może obsługiwać zadania równoległe za pomocą argumentu -jN. Jeśli nie podasz argumentu -j, system kompilacji automatycznie wybierze liczbę zadań równoległych, która jego zdaniem jest optymalna dla Twojego systemu.
Zamiast pełnego obrazu urządzenia możesz skompilować konkretne moduły, wymieniając ich nazwy w wierszu poleceń m. Polecenie m udostępnia
też pseudocel, zwany celem. Na przykład m nothing niczego nie kompiluje
, ale analizuje i weryfikuje strukturę kompilacji. Aby wyświetlić listę prawidłowych celów, wpisz m help.
Rozwiązywanie problemów z błędami kompilacji
W tej sekcji znajdziesz instrukcje dotyczące obsługi błędów kompilacji.
Błędy systemu plików tylko do odczytu (Android 17 i nowsze wersje)
Podczas kompilacji drzewo źródłowe AOSP jest tylko do odczytu. Jeśli kompilacja, którą uruchamiasz, próbuje zmodyfikować drzewo źródłowe podczas konfiguracji produktu lub innej części kompilacji, kompilacja może się nie powieść i zgłosić błędy systemu plików tylko do odczytu. Aby tymczasowo zmienić drzewo źródłowe na tryb odczytu i zapisu, możesz użyć tych opcji:
Aby zmienić całe drzewo źródłowe na tryb odczytu i zapisu podczas kompilacji, dodaj
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=truedo środowiska kompilacji.Aby zmienić część drzewa na tryb odczytu i zapisu podczas kompilacji, użyj
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ...". Ścieżki powinny być ścieżkami katalogów, w których zapisy mają być dozwolone, w stosunku do górnej części obszaru roboczego.
Nieprawidłowa wersja Javy (Android 8.0 i starsze wersje)
Jeśli kompilujesz Androida 8.0 (poziom interfejsu API 26) lub starszą wersję, polecenie m może zostać przerwane, gdy napotka problem z Twoją wersją Javy. Może się na przykład pojawić ten 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 jest zainstalowany prawidłowy zestaw JDK. Więcej informacji znajdziesz w artykule Konfigurowanie środowiska do programowania w AOSP (2.3–8.0).
- W ścieżce znajduje się inny, wcześniej zainstalowany zestaw JDK. Dodaj prawidłowy zestaw JDK na początku ścieżki lub usuń problematyczny zestaw JDK.