Postępuj zgodnie z instrukcjami na tej stronie, aby utworzyć Androida.
Konfigurowanie środowiska kompilacji
Ze swojego katalogu roboczego pobierz skrypt envsetup.sh
, aby skonfigurować środowisko kompilacji:
source build/envsetup.sh
Skrypt ten zaimportuje kilka poleceń, które pozwolą Ci pracować z kodem źródłowym Androida, w tym z poleceniami użytymi na tej stronie. Aby wyświetlić źródło skryptu, przejdź do sekcji platform/build/envsetup.sh
.
Aby wyświetlić wbudowaną pomoc, wpisz hmm
.
Wybierz cel
Zanim zaczniesz tworzyć Androida, musisz określić cel do stworzenia. Cel odzwierciedla platformę docelową, na którą tworzysz. Aby wskazać obiekt docelowy do utworzenia, użyj polecenia lunch
, a po nim ciąg znaków reprezentujący obiekt docelowy. Na przykład:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Wyświetl bieżącą wartość docelową
Aby zobaczyć bieżące ustawienia lunchu, uruchom polecenie:
$ echo "$TARGET_PRODUCT-$TARGET_RELEASE-$TARGET_BUILD_VARIANT"
Ciąg znaków reprezentujący obiekt docelowy ma ten format:
lunch product_name-release-build_variant
Komponenty tego ciągu znaków to:
product_name to nazwa produktu, który chcesz utworzyć, np.
aosp_cf_x86_64_phone
lubaosp_husky
. Konkretna product_name może mieć format odpowiedni dla Twojego urządzenia, ale format używany przez Google w przypadku urządzeń obejmuje te elementy:aosp
odnosi się do platformy open source Androida.- (opcjonalnie) Parametr
cf
jest uwzględniany, gdy środowisko docelowe ma być uruchamiane w emulatorze mątwy. - Architektura i sprzęt (kryptonim) – na przykład
x86_64_phone
lubhusky
(kryptonim telefonu Pixel 8 Pro). Listę kryptonimów urządzeń Google znajdziesz w sekcji Kryptonimy urządzeń.
release ma wartość
trunk_staging
.Część build_variant ciągu znaków może być jedną z 3 wartości z tabeli poniżej:
build_variant Opis user
Ten wariant kompilacji zapewnia ograniczony dostęp do zabezpieczeń i jest odpowiedni do zastosowań produkcyjnych. userdebug
Ten wariant kompilacji pomaga deweloperom urządzeń poznać wydajność i moc wersji, które są w fazie opracowywania. Podczas programowania za pomocą kompilacji userdebug
postępuj zgodnie ze wskazówkami dotyczącymi debugowania użytkowników.eng Ten wariant 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 lunch
bez argumentów, pojawi się lista typowych celów.
Możesz też utworzyć własne docelowe ciągi znaków, składając elementy ciągu docelowego, korzystając z informacji podanych na tej stronie i kryptonimów reprezentujących określony sprzęt Google (Kryptonim urządzeń).
Kompilowanie kodu
Aby utworzyć środowisko docelowe, uruchom to polecenie. W zależności od specyfikacji stacji roboczej pierwsza kompilacja może zająć od godziny do kilku godzin. Kolejne kompilacje zajmują znacznie mniej czasu.
$ m
Zobaczysz najpierw streszczenie środowiska docelowego i środowiska 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 kompilacji pojawią się w $OUT_DIR
. Jeśli utworzysz różne środowiska docelowe, każda kompilacja docelowa pojawi się w $OUT_DIR
.
Polecenie m
tworzy się na górze drzewa, więc możesz uruchomić m
z podkatalogów. Jeśli masz ustawioną zmienną środowiskową TOP
, używa jej polecenie m
. Jeśli TOP
nie jest ustawiony, polecenie m
wyszukuje drzewo w bieżącym katalogu, próbując znaleźć jego wierzch.
Polecenie 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.
Zamiast pełnego obrazu urządzenia możesz tworzyć konkretne moduły, podając ich nazwy w wierszu poleceń m
. Dodatkowo polecenie m
udostępnia pseudocele nazywane celami. Na przykład 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 (8.0 lub starsze)
Jeśli tworzysz wersję AOSP 8 lub starszą, m
może się przerwać, gdy napotka problem z Twoją wersją Javy. Na przykład może pojawić się 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 się zainstalować poprawnego pakietu JDK zgodnie z opisem w sekcjach JDK w artykule Skonfiguruj na potrzeby programowania AOSP (2.3–8.0) .
- W ścieżce pojawia się inny zainstalowany wcześniej pakiet JDK. Dołącz poprawny pakiet JDK na początku ścieżki lub usuń problematyczny plik JDK.