Budowanie Androida

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

Konfigurowanie środowiska

Inicjacji środowiska z envsetup.sh skryptu:

source build/envsetup.sh

lub

. build/envsetup.sh

Zobacz skrypt na platformie / Build / envsetup.sh do opisów odpowiednich poleceń, w tym obiad w wyborze celów i urządzeń tapas na budowę uwolnionych aplikacje, takie jak aplikacja TV odniesienia .

Trzeba ponownie wydaj polecenie po każdej repo sync odebrać żadnych zmian w tym skrypcie. Zauważ, że zastąpienie source z . (pojedyncza kropka) oszczędza kilka znaków, a skrócona forma jest częściej używana w dokumentacji.

W envsetup.sh importuje skryptów kilka komend, które umożliwiają pracę z kodem źródłowym Androida, w tym poleceń użytych w tym ćwiczeniu.

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

hmm

Wybór celu

lunch

Wybrać cel budować z 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ń.

Dokładną konfigurację można przekazać jako argument. Na przykład następujące polecenie odnosi się do kompletnej kompilacji emulatora z włączonym debugowaniem:

lunch aosp_arm-eng

Jeśli uruchomić bez argumentów, lunch monit, aby wybrać cel z menu. Patrz Wybieranie budować urządzenia do konfiguracji kompilacji wszystkich istniejących urządzeń.

Wszystkie cele budować przybrać formę BUILD-BUILDTYPE , gdzie BUILD jest nazwa kodowa odnosząc się do konkretnej kombinacji funkcji. BUILDTYPE jest jedną z następujących czynności.

Typ kompilacji 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. Przy opracowywaniu z kompilacji userdebug, postępuj zgodnie z wytycznymi userdebug .

Wersja eng priorytetowo traktuje wydajność inżynierską dla inżynierów pracujących na platformie. Kompilacja 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 budowy i do jazdy na prawdziwym sprzęcie, zobacz Urządzenia Flashing .

tapas

W tapas dowodzić konfiguruje kompilacji uwolnionych aplikacji. Wybiera poszczególne aplikacje do zbudowania przez system kompilacji Androida. W przeciwieństwie do lunch , tapas nie wymaga budowania obrazów dla urządzenia.

Uruchom tapas help , aby uzyskać więcej informacji na temat komendy.

Budowanie kodu

Ta sekcja jest krótkim podsumowaniem, aby upewnić się, że konfiguracja została zakończona.

Budowa wszystko z m . m może obsługiwać zadania równolegle z -jN argumentu. Jeśli nie zapewniają -j argumentu, system automatycznie wybiera budować równolegle liczbę zadań, które jej zdaniem jest optymalna dla danego systemu.

m

Jak wyjaśniono powyżej, można zbudować konkretne moduły zamiast pełnego obrazu urządzenia wymieniając ich nazwy w m linii komend. Ponadto m zapewnia pewne pseudotargets do celów specjalnych. Oto kilka przykładów:

  • droid - m droid jest normalnym budowy. Ten cel jest tutaj, ponieważ domyślny cel wymaga nazwy.
  • all - m all buduje wszystko, m droid robi, a także wszystko, co nie ma droid tag. Serwer działa build to, aby upewnić się, że wszystko jest w drzewie i posiada Android.mk plik buduje.
  • m - uruchamia buduje z górnej części drzewa. Jest to przydatne, ponieważ można uruchomić make od wewnątrz podkatalogów. Jeśli masz TOP zestaw zmienną środowiska, używa tego. Jeśli tego nie zrobisz, wyszukuje drzewo z bieżącego katalogu, próbując znaleźć wierzchołek drzewa. Można też zbudować drzewo cały kod źródłowy uruchamiając m bez argumentów lub zbudować konkretnych celów poprzez podanie ich nazwy.
  • mma - Buduje wszystkie moduły w bieżącym katalogu i ich zależności.
  • mmma - Buduje wszystkie moduły w dostarczonym katalogów i ich zależności.
  • croot - cd na szczycie drzewa.
  • clean - m clean usuwa wszystkie wyjścia i plikach pośrednich dla tej konfiguracji. To jest taka sama jak rm -rf out/ .

Uruchom m help , aby zobaczyć, co inni pseudotargets m zapewnia.

Uruchamianie kompilacji

Możesz uruchomić swoją kompilację na emulatorze lub sflashować ją na urządzeniu. Ponieważ masz już wybrany cel budować z lunch , to jest mało prawdopodobne, aby uruchomić w innym celu, niż został zbudowany.

Flashowanie z fastboot

Migać urządzenie, użyj fastboot , które powinny być zawarte w ścieżce po udanej kompilacji. Zobacz Flashing urządzenie do instrukcji.

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 odciskach palców w Parameters budowanie sekcji definicji Android zgodności dokumentów (CDD) dla dokładnej 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 w procesie raportowania emisji 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
  • Specyfikacja produktu i zastosowania-cecha ustawienie zatrudniony przez aplikacje do urządzeń docelowych spełniających wymagania oczekiwane
  • Wdrożenia komponentów sprzętowych i programowych

Zobacz CDD dla pełnych szczegółów i dodawania nowego urządzenia Instrukcje dotyczące tworzenia zupełnie nowego urządzenia z Androidem.

Rozwiązywanie typowych błędów kompilacji

Niewłaściwa wersja Javy

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:

  • Niestosowanie się do zainstalowania poprawnego JDK jak określono w wymaganiami JDK . Upewnij się, że śledził kroki Konfigurowanie środowiska oraz Wybierając cel .
  • Na twojej ścieżce pojawił się inny zainstalowany wcześniej JDK. Dodaj poprawny JDK na początku ścieżki lub usuń problematyczny JDK.

Brak uprawnień USB

Domyślnie w większości systemów Linux nieuprzywilejowani użytkownicy nie mają dostępu do portów USB. Jeśli widzisz błąd Odmowa dostępu, postępuj zgodnie z instrukcjami Konfigurowanie dostępu USB .

Jeśli ADB został już uruchomiony i nie można połączyć się z urządzeniem po otrzymaniu tych zasad skonfigurowane, można go zabić z adb kill-server . To polecenie powoduje ponowne uruchomienie ADB z nową konfiguracją.