Utwórz Androida

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_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 lub aosp_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 lub husky (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.