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.sh
Ten skrypt importuje kilka poleceń, które umożliwiają pracę z kodem źródłowym Androida, w tym polecenia użyte na tej stronie. Aby wyświetlić źródło skryptu, kliknij platform/build/envsetup.sh
.
Aby wyświetlić wbudowaną pomoc, wpisz hmm
.
Wybierz cel
Zanim zaczniesz kompilować Androida, musisz określić cel kompilacji. Element docelowy odzwierciedla platformę docelową, na której tworzysz aplikację. Aby określić środowisko docelowe, które chcesz utworzyć, użyj polecenia lunch
, a potem ciągu znaków reprezentującego środowisko docelowe. Na przykład:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebug
Powinien pojawić się opis środowiska docelowego i 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 następujący format:
lunch product_name-release_config-build_variant
Ciąg tekstowy składa się z tych komponentów:
product_name
to nazwa produktu, który chcesz utworzyć, np.aosp_cf_x86_64_only_phone
lubaosp_husky
. Twój konkretnyproduct_name
może mieć własny format, ale format używany przez Google na urządzeniach tej firmy ma te komponenty:aosp
– odnosi się do platformy Android Open Source Platform.- (opcjonalnie) Wymagany, gdy docelowy obraz systemu ma być uruchamiany w emulatorze Cuttlefish.
cf
- architektura i sprzęt (nazwa kodowa), np.
x86_64_only_phone
lubhusky
, czyli nazwa kodowa Pixela 8 Pro; Listę nazw kodowych urządzeń Google znajdziesz w artykule Nazwy kodowe urządzeń.
release_config
jest ustawiona na konfigurację wersji, na przykład konfigurację wersji deweloperskiej o nazwieaosp_current
. Konfiguracja wersji określa niektóre funkcje i kod, które są powiązane z flagami uruchamiania funkcji i są włączone lub wyłączone w kompilacji. Więcej informacji o konfiguracjach wersji znajdziesz w artykule Ustawianie wartości uruchamiania flagi funkcji.Część
build_variant
ciągu znaków może mieć jedną z 3 wartości podanych w tej tabeli:build_variant
Opis user
Ta wersja kompilacji zapewnia ograniczony dostęp do zabezpieczeń i nadaje się do środowiska produkcyjnego. userdebug
Ta wersja kompilacji pomaga deweloperom urządzeń poznać wydajność i moc wersji w trakcie opracowywania. Podczas tworzenia aplikacji w wersji userdebug
postępuj zgodnie z wytycznymi dotyczącymi wersji userdebug.eng
Ta wersja kompilacji ma 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 polecenie lunch
bez argumentów, wyświetli się lista typowych celów.
Możesz też tworzyć własne ciągi docelowe, łącząc elementy ciągu docelowego na podstawie informacji na tej stronie i nazw kodowych, które reprezentują konkretne urządzenia Google. Znajdziesz je na stronie Nazwy kodowe urządzeń.
Wyświetlanie obecnej wartości docelowej
Aby zobaczyć bieżące ustawienia lunchu, uruchom polecenie:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Tworzenie kodu
Aby utworzyć środowisko docelowe, 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 zajmują znacznie mniej czasu.
m
Dane wyjściowe kompilacji pojawią się w $OUT_DIR
. Jeśli utworzysz różne wersje docelowe, każda z nich pojawi się w sekcji $OUT_DIR
.
Polecenie m
tworzy strukturę od góry, więc możesz uruchomić m
w podkatalogach. Jeśli masz ustawioną zmienną środowiskową TOP
, polecenie m
używa jej. Jeśli zmienna TOP
nie jest ustawiona, polecenie m
przeszukuje drzewo od bieżącego katalogu, próbując znaleźć jego wierzchołek.
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.
Możesz skompilować konkretne moduły zamiast pełnego obrazu urządzenia, wymieniając nazwy modułów w wierszu poleceń m
. Dodatkowo polecenie m
udostępnia pewne pseudoelementy docelowe, zwane celami. Na przykład polecenie m nothing
niczego nie tworzy, 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 (wersja 8.0 lub starsza)
Jeśli tworzysz AOSP 8 lub starszą wersję, m
może przerwać działanie, gdy napotka problem z Twoją wersją Javy. Możesz na przykład otrzymać taki 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 Ci się zainstalować prawidłowego pakietu JDK zgodnie z opisem w sekcjach dotyczących pakietu JDK w artykule Konfigurowanie środowiska do tworzenia AOSP (2.3–8.0) .
- W ścieżce znajduje się inna, wcześniej zainstalowana wersja JDK. Dodaj prawidłowy pakiet JDK na początku ścieżki lub usuń problematyczny pakiet JDK.