Postępuj zgodnie z tymi instrukcjami, aby rozpocząć tworzenie Androida.
Konfigurowanie środowiska
Zainicjuj środowisko za pomocą skryptu envsetup.sh
:
source build/envsetup.sh
lub
. build/envsetup.sh
Zobacz skrypt pod adresem platform/build/envsetup.sh, aby zapoznać się z opisami powiązanych poleceń, w tym lunchu służącego do wybierania urządzeń docelowych i tapas do tworzenia niepowiązanych aplikacji, takich jak referencyjna aplikacja telewizyjna .
Musisz ponownie wykonać to polecenie po każdej repo sync
, aby pobrać wszelkie zmiany w tym skrypcie. Zwróć uwagę, że zamieniając source
na .
(pojedyncza kropka) oszczędza kilka znaków, a skrócona forma jest częściej używana w dokumentacji.
Skrypt envsetup.sh
importuje kilka poleceń, które umożliwiają pracę z kodem źródłowym systemu Android, w tym polecenia użyte w tym ćwiczeniu.
Aby zobaczyć pełną listę dostępnych poleceń, uruchom:
hmm
Wybór celu
obiad
Wybierz cel do zbudowania do lunch
. lunch product_name - build_variant
wybiera product_name jako produkt do zbudowania i build_variant jako wariant do zbudowania i przechowuje te wybory w środowisku do odczytania przez kolejne wywołania m
i innych podobnych poleceń.
Dokładną konfigurację można przekazać jako argument. Na przykład poniższe polecenie odnosi się do kompletnej kompilacji emulatora z włączonym debugowaniem:
lunch aosp_arm-eng
Uruchomiony bez argumentów, lunch
poprosi o wybranie celu z menu, ale zauważ, że menu nie zawiera wszystkich możliwości. Zobacz Wybieranie kompilacji urządzenia dla konfiguracji kompilacji wszystkich urządzeń obsługiwanych w AOSP lub porozmawiaj z członkami zespołu o prawidłowym lunchu dla urządzenia, nad którym pracujesz.
Wszystkie cele kompilacji mają postać BUILD-BUILDTYPE
, gdzie BUILD
jest nazwą kodową odnoszącą się do konkretnej kombinacji funkcji. BUILDTYPE
jest jednym z poniższych.
Typ budowy | Posługiwać się |
---|---|
użytkownik | Ograniczony dostęp; nadaje się do produkcji |
debugowanie użytkownika | Jak użytkownik, ale z dostępem do roota i możliwością debugowania; preferowany do debugowania |
pol | Konfiguracja programistyczna z dodatkowymi narzędziami do debugowania |
Kompilacja userdebug powinna zachowywać się tak samo jak kompilacja użytkownika, z możliwością włączenia dodatkowego debugowania, które zwykle narusza model bezpieczeństwa platformy. To sprawia, że kompilacja userdebug jest dobra do testowania użytkowników z większymi możliwościami diagnostycznymi. Podczas programowania z kompilacją userdebug postępuj zgodnie z wytycznymi userdebug .
Wersja eng priorytetowo traktuje wydajność inżynierską dla inżynierów pracujących na platformie. Wersja eng wyłącza różne optymalizacje używane w celu zapewnienia dobrego doświadczenia użytkownika. W przeciwnym razie kompilacja eng zachowuje się podobnie do kompilacji użytkownika i userdebug, dzięki czemu deweloperzy urządzeń mogą zobaczyć, jak zachowuje się kod w tych środowiskach.
Aby uzyskać więcej informacji na temat tworzenia i uruchamiania na rzeczywistym sprzęcie, zobacz Flashing Devices .
tapas
Polecenie tapas
konfiguruje kompilację niepowiązanych aplikacji. Wybiera poszczególne aplikacje do zbudowania przez system kompilacji Androida. W przeciwieństwie do lunch
, tapas
nie wymaga tworzenia obrazów dla urządzenia.
Uruchom tapas help
, aby uzyskać więcej informacji na temat polecenia.
Budowanie kodu
Ta sekcja jest krótkim podsumowaniem, aby upewnić się, że konfiguracja została zakończona.
Zbuduj wszystko z m
. m
może obsługiwać zadania równoległe z argumentem -jN
. Jeśli nie podasz argumentu -j
, system budowania automatycznie wybierze liczbę równoległych zadań, które uważa za optymalne dla twojego systemu.
m
Jak wyjaśniono powyżej, możesz zbudować określone moduły zamiast pełnego obrazu urządzenia, podając ich nazwy w wierszu poleceń m
. Ponadto m
zapewnia kilka pseudocelów do celów specjalnych. Oto kilka przykładów:
-
droid
-m droid
to normalna kompilacja. Ten cel jest tutaj, ponieważ domyślny cel wymaga nazwy. -
all
-m all
buduje wszystko, co robim droid
, plus wszystko, co nie ma tagudroid
. Serwer kompilacji uruchamia to, aby upewnić się, że wszystko, co znajduje się w drzewie i ma plikAndroid.mk
, kompiluje się. -
m
- Uruchamia kompilacje z wierzchołka drzewa. Jest to przydatne, ponieważ możesz uruchomićmake
z podkatalogów. Jeśli masz ustawioną zmienną środowiskowąTOP
, używa jej. Jeśli tego nie zrobisz, wyszukuje drzewo z bieżącego katalogu, próbując znaleźć wierzchołek drzewa. Możesz albo zbudować całe drzewo kodu źródłowego, uruchamiającm
bez argumentów, albo zbudować konkretne cele, określając ich nazwy. -
mma
— Buduje wszystkie moduły w bieżącym katalogu i ich zależności. -
mmma
— buduje wszystkie moduły w dostarczonych katalogach i ich zależności. -
croot
-cd
do wierzchołka drzewa. -
clean
-m clean
usuwa wszystkie pliki wyjściowe i pośrednie dla tej konfiguracji. To to samo corm -rf out/
.
Uruchom m
m help
, aby zobaczyć, co oferują inne pseudocele.
Uruchamianie kompilacji
Możesz uruchomić swoją kompilację na emulatorze lub sflashować ją na urządzeniu. Ponieważ cel kompilacji został już wybrany podczas lunch
, jest mało prawdopodobne, aby działał w innym celu, niż został stworzony.
Flashowanie z fastboot
Aby sflashować urządzenie, użyj fastboot
, który powinien znaleźć się na twojej ścieżce po udanej kompilacji. Aby uzyskać instrukcje, zobacz Flashowanie urządzenia .
Emulacja urządzenia z Androidem
Emulator jest dodawany do ścieżki automatycznie przez proces kompilacji. Aby uruchomić emulator, wpisz:
emulator
Zrozumienie odcisków palców kompilacji
Aby śledzić i zgłaszać problemy związane z konkretną kompilacją Androida, ważne jest zrozumienie odcisku palca kompilacji. Odcisk cyfrowy kompilacji to unikalny, czytelny dla człowieka ciąg znaków zawierający informacje o producencie wydawane dla każdej kompilacji. Zobacz opis FINGERPRINT w sekcji Parametry kompilacji dokumentu definicji zgodności systemu Android (CDD), aby uzyskać dokładną składnię.
Odcisk cyfrowy kompilacji reprezentuje konkretną implementację i wersję Androida. Ten unikalny klucz umożliwia programistom aplikacji i innym osobom zgłaszanie problemów z określonymi wersjami oprogramowania układowego. Zobacz Zgłaszanie błędów , aby zapoznać się z procesem zgłaszania problemów w systemie Android.
Odcisk cyfrowy kompilacji zawiera wszystkie szczegóły implementacji Androida:
- API: Android i natywne, a także miękkie zachowania API
- Podstawowe API i niektóre zachowania interfejsu użytkownika systemu
- Wymagania dotyczące kompatybilności i bezpieczeństwa określone w CDD
- Specyfikacje produktów i ustawienia funkcji i zastosowań wykorzystywane przez aplikacje do obsługi urządzeń spełniających oczekiwane wymagania
- Wdrożenia komponentów sprzętowych i programowych
Zobacz CDD , aby uzyskać szczegółowe informacje, oraz Dodawanie nowego urządzenia , aby uzyskać instrukcje dotyczące tworzenia całkowicie nowego urządzenia z systemem Android.
Rozwiązywanie typowych błędów kompilacji
Niewłaściwa wersja Javy
Jeśli próbujesz zbudować wersję Androida, która jest niezgodna z twoją wersją Java make
przerwij, wyświetlając komunikat taki jak:
************************************************************ 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:
- Niepowodzenie instalacji poprawnego JDK zgodnie z wymaganiami JDK . Upewnij się, że wykonałeś czynności opisane w Konfigurowanie środowiska i Wybieranie celu .
- Na Twojej ścieżce pojawił się inny zainstalowany wcześniej JDK. Dodaj poprawny JDK na początku ścieżki lub usuń problematyczny JDK.
Brak pozwolenia na USB
Domyślnie w większości systemów Linux nieuprzywilejowani użytkownicy nie mają dostępu do portów USB. Jeśli zobaczysz błąd odmowy uprawnień, postępuj zgodnie z instrukcjami w sekcji Konfigurowanie dostępu do USB .
Jeśli ADB już działał i nie może połączyć się z urządzeniem po skonfigurowaniu tych reguł, możesz go zabić za pomocą adb kill-server
. To polecenie powoduje ponowne uruchomienie ADB z nową konfiguracją.