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ż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-userdebugPowinien 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_variantCiąg tekstowy składa się z tych komponentów:
product_nameto nazwa produktu, który chcesz utworzyć, np.aosp_cf_x86_64_only_phonelubaosp_husky. Twój konkretnyproduct_namemoż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_phonelubhusky, czyli nazwa kodowa Pixela 8 Pro; Listę nazw kodowych urządzeń Google znajdziesz w artykule Nazwy kodowe urządzeń.
release_configjest 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_variantciągu znaków może mieć jedną z 3 wartości podanych w tej tabeli:build_variantOpis userTa wersja kompilacji zapewnia ograniczony dostęp do zabezpieczeń i nadaje się do środowiska produkcyjnego. userdebugTa wersja kompilacji pomaga deweloperom urządzeń poznać wydajność i moc wersji w trakcie opracowywania. Podczas tworzenia aplikacji w wersji userdebugpostępuj zgodnie z wytycznymi dotyczącymi wersji userdebug.engTa 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.
mDane 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.