Google jest zaangażowany w promowanie równości rasowej dla społeczności czarnych. Zobacz jak.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Tworzenie Androida

Postępuj zgodnie z tymi instrukcjami, aby rozpocząć tworzenie Androida.

Skonfiguruj środowisko

Zainicjuj środowisko za pomocą skryptu envsetup.sh :

source build/envsetup.sh

lub

. build/envsetup.sh

Zobacz skrypt na platformie / build / envsetup.sh, aby zapoznać się z opisami powiązanych poleceń, w tym lunch do wybierania urządzeń docelowych i tapas do tworzenia uwolnionych aplikacji, takich jak referencyjna aplikacja telewizyjna .

Będziesz musiał ponownie wydać to polecenie po każdej repo sync aby pobrać wszelkie zmiany w tym skrypcie. Zwróć uwagę, że zastąpienie source przez . (pojedyncza kropka) oszczędza kilka znaków, a skrócona forma jest częściej stosowana w dokumentacji.

Skrypt envsetup.sh importuje kilka poleceń, które umożliwiają pracę z kodem źródłowym systemu Android, w tym z poleceniami używanymi w tym ćwiczeniu. Oto kilka ważnych przykładów poleceń:

  • lunch - lunch product_name - build_variant wybiera product_name jako iloczyn budować, a build_variant jako wariantu budować, i zapisuje te pozycje w srodowisku być odczytane przez kolejnych wywołań m i innych podobnych poleceń.
  • m - uruchamia kompilacje ze szczytu drzewa. Jest to przydatne, ponieważ make można uruchomić z podkatalogów. Jeśli masz ustawioną zmienną środowiskową TOP , używa tego. Jeśli tego nie zrobisz, przeszukuje drzewo z bieżącego katalogu, próbując znaleźć wierzchołek drzewa. Możesz albo zbudować całe drzewo kodu źródłowego, uruchamiając m bez argumentów, albo zbudować określone cele, podając ich nazwy.
  • mma - buduje wszystkie moduły w bieżącym katalogu i ich zależności.
  • mmma - buduje wszystkie moduły w podanych katalogach i ich zależności.
  • croot - cd na szczyt drzewa.

Aby zobaczyć pełną listę dostępnych poleceń, uruchom:

hmm

Wybierz cel

Wybierz cel, który chcesz zbudować podczas lunch . Dokładną konfigurację można przekazać jako argument. Na przykład poniższe polecenie odnosi się do pełnej kompilacji emulatora z włączonym całym debugowaniem:

lunch aosp_arm-eng

Jeśli zostanie uruchomiony bez argumentów, lunch wyświetli monit o wybranie celu z menu. Zobacz Wybieranie kompilacji urządzenia, aby zapoznać się z konfiguracjami kompilacji wszystkich istniejących urządzeń.

Wszystkie cele kompilacji mają postać BUILD-BUILDTYPE , gdzie BUILD jest kryptonimem odnoszącym się do określonej kombinacji funkcji. BUILDTYPE jest jednym z poniższych.

Typ budowli Posługiwać się
użytkownik Ograniczony dostęp; nadaje się do produkcji
userdebug Podobnie jak użytkownik, ale z dostępem roota i możliwością debugowania; preferowany do debugowania
inż 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 normalnie narusza model zabezpieczeń platformy. Dzięki temu kompilacja userdebug jest dobra do testowania przez użytkowników z większymi możliwościami diagnostycznymi. Podczas programowania z kompilacją userdebug postępuj zgodnie z wytycznymi userdebug .

Kompilacja eng stawia na pierwszym miejscu produktywność inżynierską dla inżynierów pracujących na platformie. Kompilacja eng wyłącza różne optymalizacje używane w celu zapewnienia dobrego wrażenia użytkownika. W przeciwnym razie kompilacja eng zachowuje się podobnie do kompilacji user i userdebug, dzięki czemu programiści urządzeń mogą zobaczyć, jak kod zachowuje się w tych środowiskach.

Aby uzyskać więcej informacji na temat tworzenia i uruchamiania na rzeczywistym sprzęcie, zobacz Uruchamianie kompilacji .

Tworzenie kodu

Ta sekcja zawiera krótkie podsumowanie, aby upewnić się, że konfiguracja została zakończona.

Zbuduj wszystko z m . m może obsługiwać równoległe zadania z argumentem -jN . Jeśli nie podasz argumentu -j , system kompilacji automatycznie wybierze równoległą liczbę zadań, którą uważa za optymalną 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 linii poleceń m . Ponadto m zapewnia kilka pseudocelów do specjalnych celów. Oto kilka przykładów:

  • droid - m droid to normalna wersja. Ten cel jest tutaj, ponieważ domyślny cel wymaga nazwy.
  • all - m all buduje wszystko, co robi m droid , plus wszystko, co nie ma tagu droid . Serwer kompilacji uruchamia to, aby upewnić się, że wszystko, co jest w drzewie i ma plik Android.mk zostanie zbudowane.
  • clean - m clean usuwa wszystkie pliki wyjściowe i pośrednie dla tej konfiguracji. To jest to samo, co rm -rf out/ .

Uruchom m help aby zobaczyć, jakie inne pseudocele dostarcza m .

Uruchom!

Możesz uruchomić kompilację w emulatorze lub sflashować ją na urządzeniu. Ponieważ cel kompilacji został już wybrany podczas lunch , jest mało prawdopodobne, aby działał na innym celu, niż został zbudowany.

Miga z fastbootem

Aby sflashować urządzenie, użyj fastboot , który powinien znajdować się w twojej ścieżce po udanej kompilacji. Aby uzyskać instrukcje, zobacz Flashowanie urządzenia .

Emulowanie urządzenia z systemem Android

Emulator jest dodawany do ścieżki automatycznie w procesie kompilacji. Aby uruchomić emulator, wpisz:

emulator

Rozwiązywanie typowych błędów kompilacji

Niewłaściwa wersja Java

Jeśli próbujesz zbudować wersję Androida, która jest niezgodna z wersją Java, make przerywa z wiadomości, takich 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:

Python w wersji 3

Repo jest oparte na określonej funkcjonalności z Python 2.x i jest niezgodne z Pythonem 3. Aby korzystać z Repo, zainstaluj Python 2.x:

apt-get install python

System plików bez rozróżniania wielkości liter

Jeśli tworzysz na systemie plików HFS w systemie macOS, możesz napotkać błąd, taki jak:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Postępuj zgodnie z instrukcjami w Tworzenie obrazu dysku z rozróżnianiem wielkości liter .

Brak pozwolenia USB

Domyślnie w większości systemów Linux nieuprzywilejowani użytkownicy nie mają dostępu do portów USB. Jeśli zobaczysz komunikat o odmowie uprawnień, postępuj zgodnie z instrukcjami w Konfigurowanie dostępu USB .

Jeśli [adb] (adb.md) 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ą.