Omówienie projektów i procesów Soong

Projekt w Android Studio for Platform (ASfP) zawiera wszystko, co definiuje obszar roboczy w kodzie AOSP – od kodu źródłowego i zasobów po kod testowy i konfiguracje kompilacji Soong.

ASfP, oparty na modelu obszaru roboczego IntelliJ, tworzy duże projekty platformowe i przy uruchomieniu przywraca model projektu z zapisanych w pamięci podręcznej migawek. Zawartość katalogu out/ i wygenerowane pliki gen są wykluczone z zakresów wyszukiwania projektu, dzięki czemu nawigacja po symbolach i plikach pozostaje szybka.

Konfiguracja projektu (.asfp-project)

Konfigurację projektu ASfP kontroluje plik YAML .asfp-project znajdujący się w katalogu głównym projektu. Ten plik określa, które katalogi, moduły Soong, języki i flagi kompilacji są uwzględniane w obszarze roboczym.

Konfigurację projektu możesz otworzyć w dowolnym momencie, korzystając z jednej z tych opcji:

  • W menu głównym wybierz ASfP > Projekt > Otwórz konfigurację.
  • Kliknij dwukrotnie .asfp-project w katalogu głównym okna narzędzia Projekt.
  • Kliknij Otwórz konfigurację na pasku narzędzi okna narzędzia Soong.

Po edycji pliku .asfp-project uruchom synchronizację projektu, aby zmiany zostały zastosowane.

Szablony projektów, które można udostępniać (eksportowanie i importowanie)

Zespoły pracujące nad tym samym podsystemem (np. SystemUI, Ustawienia, SurfaceFlinger lub Automotive) mogą udostępniać standardową konfigurację .asfp-project jako szablon:

  • Eksportuj do szablonu: kliknij prawym przyciskiem myszy kartę edytora .asfp-project lub wybierz ASfP > Projekt > Eksportuj konfigurację do szablonu, aby zapisać plik szablonu, który można udostępniać.

    Eksportowanie konfiguracji projektu ASfP do szablonu, który można udostępnić

  • Importuj z szablonu: podczas tworzenia nowego projektu w kreatorze konfiguracji projektu wybierz Importuj z szablonu i wybierz udostępniony plik YAML .asfp-project, aby wstępnie wypełnić katalogi, moduły i ustawienia kompilacji.

Parametry konfiguracji

Plik .asfp-project obsługuje te parametry:

repo

Wymagane: ścieżka bezwzględna do katalogu głównego wyewidencjonowanego repozytorium platformy Android.

repo: /path/to/aosp

lunch

Wymagane: cel lunch powiązany z projektem. Używany do wszystkich działań związanych z kompilacją, synchronizacją i wdrażaniem Soong.

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

Opcjonalnie: katalogi, które mają być uwzględnione w projekcie lub z niego wykluczone (względem repo katalogu głównego). Obsługiwane są katalogi z linkami symbolicznymi i katalogi źródłowe.

directories:
  include:
    -   frameworks/base
    -   packages/apps/Settings
  exclude:
    -   vendor
    -   out/soong

modules

Opcjonalnie: konkretne moduły Soong, które mają być uwzględnione w projekcie lub z niego wykluczone. Działa w połączeniu z parametrem directories. Obsługiwane są pełne i skrócone nazwy modułów.

modules:
  include:
    -   SystemUI
    -   frameworks/base/services/core/java:services
  exclude:
    -   UnusedModule

test_sources

Opcjonalnie: ścieżki względne, które mają być oznaczone jako katalogi źródłowe testów, gdy automatyczne heurystyki źródeł testów ASfP wymagają ręcznego zastąpienia.

test_sources:
  -   cts/tests/tests/example
  -   tests/mytests

other_languages

Opcjonalnie: domyślnie włączona jest obsługa języków Java, Kotlin i Android.bp. Dodaj cpp, aby włączyć obsługę języków C i C++, lub rust, aby włączyć obsługę języka Rust:

other_languages:
  -   cpp
  -   rust

build_config

Opcjonalnie: niestandardowe flagi lub zmienne środowiskowe przekazywane do wywołań kompilacji Soong wywoływanych przez IDE (w tym synchronizacje, kompilacje w obszarze marginesu i konfiguracje uruchamiania):

build_config:
  flags:
    -   -j64
  env:
    SOONG_PARTIAL_COMPILE: true
    SOONG_ALLOW_MISSING_DEPENDENCIES: true

Tryby synchronizacji i okno narzędzia Soong

ASfP oferuje kilka sposobów synchronizacji projektu IDE z wyewidencjonowanym kodem AOSP w zależności od potrzeb przepływu pracy. Dostęp do tych działań można uzyskać w menu ASfP > Synchronizuj lub w oknie narzędzia Soong:

  • Synchronizuj projekt: analizuje skonfigurowane katalogi i moduły oraz aktualizuje indeksowanie i zależności IDE.
  • Synchronizacja częściowa: synchronizuje tylko wybrany podzbiór modułów lub katalogów, co pozwala zaoszczędzić czas podczas pracy w lokalnym obszarze drzewa.
  • Synchronizacja bez kompilacji: odświeża strukturę projektu IDE i katalogi źródłowe bez uruchamiania kroku kompilacji Soong – przydatne, gdy dodasz lub przeniesiesz pliki źródłowe albo gdy kompilacja została już przeprowadzona w terminalu.
  • Synchronizuj i skompiluj wszystko: łączy synchronizację projektu z pełną kompilacją Soong w jednym kroku.

Okno narzędzia Soong (Widok > Okna narzędzi > Soong) wyświetla wskaźniki stanu w czasie rzeczywistym dla każdego węzła zadania synchronizacji, przyciski szybkiego dostępu do kompilacji i wykonywanie poleceń Soong.


Kompilacja, wdrażanie i nawigacja w edytorze Android.bp

ASfP zapewnia zintegrowaną obsługę edytora plików Android.bp:

Kompilowanie, uruchamianie i debugowanie celów z obszaru marginesu

Otwórz dowolny plik Android.bp w projekcie, aby skompilować lub uruchomić cele za pomocą 2 ikon obszaru marginesu:

  • Ikona kompilacji (wszystkie moduły nazwane): pojawia się obok name: w każdym nazwanym module (cc_library_shared, java_library, rust_binary, android_app, i celach testowych), aby skompilować ten cel Soong (Skompiluj "<moduł>").
  • Ikona uruchamiania lub debugowania (*_test, *_test_host, i android_app): kliknij Uruchom obok modułu testowego lub deklaracji android_app, aby uruchomić lub debugować moduł. Moduły android_test są debugowane za pomocą atest, a moduły cc_test* i rust_test* są uruchamiane w ramach wbudowanego LLDB.

Kompilowanie, uruchamianie i debugowanie modułów za pomocą ikon na marginesie Android.bp

Kontekstowe konfiguracje uruchamiania wdrożenia i flashowania

W przypadku modułów, które można wdrożyć w plikach Android.bp, możesz tworzyć i uruchamiać kontekstowe konfiguracje uruchamiania Soong Deploy z obszaru marginesu lub menu kontekstowego, korzystając z tych funkcji:

  • Metody wdrażania: wdrażaj za pomocą adb, niestandardowych skryptów powłoki, adevice, lub flashall.
  • Haczyki kompilacji Soong przed uruchomieniem: automatycznie skompiluj docelowy moduł Soong przed wdrożeniem na połączonym urządzeniu lub urządzeniu wirtualnym Cuttlefish.

Wybieranie konfiguracji uruchamiania Adevice lub Flashall w ASfP

Przechodzenie między kodem źródłowym a Android.bp

W dowolnym pliku źródłowym lub katalogu w oknie narzędzia Projekt , na karcie edytora lub w menu kontekstowym edytora kliknij prawym przyciskiem myszy i wybierz Otwórz odpowiedni plik Android.bp. ASfP lokalizuje i wyróżnia deklarację modułu Android.bp, która kompiluje ten plik, rozwiązując bloki defaults, wzorce srcs z symbolami wieloznacznymi i linki symboliczne.

Działanie menu kontekstowego „Otwórz odpowiedni plik Android.bp”

Inteligentne funkcje edytora Android.bp i dokumentacja w dymkach

  • Nawigacja między plikami i liczba użyć: kliknij z wciśniętym klawiszem Control dowolne odwołanie do modułu, plik srcs lub soong_config_module_type, aby przejść do jego deklaracji. Obok nazw modułów i udostępnionych celów srcs pojawiają się klikalne podpowiedzi N Usages , a moduły bibliotek, do których nie ma odwołań, są wizualnie przyciemnione.
  • Podpowiedzi z dokumentacją właściwości Soong: najedź kursorem na dowolną właściwość w pliku Android.bp – w tym właściwości w zakresie architektury lub celu w sekcjach target, arch, i multilib – aby wyświetlić jej sygnaturę typu Soong i dokumentację w tekście.

Etykietki z dokumentacją właściwości Android.bp i podpowiedzi dotyczące użycia.


Zarządzanie wirtualnym urządzeniem Cuttlefish i powielanie ekranu na wielu ekranach

ASfP zawiera wbudowaną wtyczkę Cuttlefish dla deweloperów platform, systemu operacyjnego Android Automotive (AAOS) i pojazdów definiowanych programowo (SDV), którzy pracują z lokalnie zbudowanymi wirtualnymi urządzeniami Cuttlefish:

  • Konfiguracja wielu urządzeń w Menedżerze urządzeń: twórz konfiguracje wielu urządzeń wirtualnych Cuttlefish i zarządzaj nimi w Menedżerze urządzeń za pomocą lokalnego wyewidencjonowania AOSP ($ANDROID_BUILD_TOP i $ANDROID_PRODUCT_OUT).
  • Powielanie ekranu na wielu ekranach w oknie narzędzia Cuttlefish: otwórz Widok > Okna narzędzi > Cuttlefish, aby włączyć wbudowane powielanie ekranu na wielu ekranach Cuttlefish, dzięki czemu możesz jednocześnie wyświetlać wiele ekranów samochodowych i wchodzić z nimi w interakcję w przypadku przepływów pracy AAOS i SDV.

Okno narzędzia Cuttlefish i odzwierciedlanie wyświetlacza na wielu urządzeniach w ASfP