Panoramica dei progetti e workflow di Soong

Un progetto in Android Studio for Platform (ASfP) contiene tutto ciò che definisce il tuo workspace per la codebase AOSP, dal codice sorgente e asset al codice di test e alle configurazioni di compilazione Soong.

Basato sul modello di workspace IntelliJ, ASfP crea progetti di piattaforme di grandi dimensioni e ripristina il modello di progetto dagli snapshot memorizzati nella cache all'avvio. I contenuti all'interno della directory out/ e i file gen generati sono esclusi dagli ambiti di ricerca del progetto, in modo che la navigazione di simboli e file rimanga veloce.

Configurazione del progetto (.asfp-project)

Il file YAML .asfp-project, che si trova nella root della directory del progetto, controlla la configurazione del progetto ASfP. Questo file definisce le directory, i moduli Soong, le lingue e i flag di build inclusi nel workspace.

Puoi aprire la configurazione del progetto in qualsiasi momento utilizzando una delle seguenti opzioni:

  • Seleziona ASfP > Progetto > Apri configurazione dal menu principale.
  • Fai doppio clic su .asfp-project nella root della finestra degli strumenti Progetto.
  • Fai clic su Apri configurazione nella barra degli strumenti della finestra degli strumenti Soong.

Dopo aver modificato .asfp-project, esegui una sincronizzazione del progetto per rendere effettive le modifiche.

Modelli di progetto condivisibili (esportazione e importazione)

I team che lavorano sullo stesso sottosistema (ad esempio SystemUI, Impostazioni, SurfaceFlinger o Automotive) possono condividere una configurazione .asfp-project standard come modello:

  • Esporta in modello: fai clic con il tasto destro del mouse sulla scheda dell'editor .asfp-project o seleziona ASfP > Progetto > Esporta configurazione in modello per salvare un file modello condivisibile.

    Esportare la configurazione di un progetto ASfP in un modello condivisibile

  • Importa da modello: quando crei un nuovo progetto nella configurazione guidata del progetto, seleziona Importa da modello e scegli il file YAML condiviso .asfp-project per precompilare directory, moduli e impostazioni di build.

Parametri di configurazione

Il file .asfp-project supporta i seguenti parametri:

repo

Obbligatorio: percorso assoluto alla root del checkout del repository della piattaforma Android.

repo: /path/to/aosp

lunch

Obbligatorio: target di lunch associato al progetto. Utilizzato per tutte le azioni di build, sincronizzazione e deployment di Soong.

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

Facoltativo: directory da includere o escludere dal progetto (relative alla repo root). Sono supportate le directory con link simbolici e le root di origine.

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

modules

Facoltativo: moduli Soong specifici da includere o escludere dal progetto. Funziona in combinazione con directories. Sono supportati sia i nomi dei moduli completi sia quelli abbreviati.

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

test_sources

Facoltativo: percorsi relativi da contrassegnare come root di origine di test quando l'euristica automatica dell'origine di test di ASfP richiede una sostituzione manuale.

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

other_languages

Facoltativo: il supporto per Java, Kotlin e Android.bp è attivato per impostazione predefinita. Aggiungi cpp per il supporto del linguaggio C e C++ o rust per il supporto del linguaggio Rust:

other_languages:
  -   cpp
  -   rust

build_config

Facoltativo: flag personalizzati o variabili di ambiente passati alle chiamate di build Soong attivate dall'IDE (inclusi sincronizzazioni, build gutter e configurazioni di esecuzione):

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

Modalità di sincronizzazione e finestra degli strumenti Soong

ASfP offre diversi modi per sincronizzare il progetto IDE con il checkout AOSP, a seconda delle esigenze del workflow. Accedi a queste azioni dal menu ASfP > Sincronizza o dalla finestra degli strumenti Soong:

  • Sincronizza progetto: analizza le directory e i moduli configurati e aggiorna l'indicizzazione e le dipendenze dell'IDE.
  • Sincronizzazione parziale: sincronizza solo un sottoinsieme mirato di moduli o directory, risparmiando tempo quando lavori in un'area localizzata dell'albero.
  • Sincronizzazione senza build: aggiorna la struttura del progetto IDE e le root di origine senza eseguire un passaggio di build Soong. Questa opzione è utile quando hai aggiunto o spostato file di origine o hai già eseguito la build dal terminale.
  • Sincronizza ed esegui la build completa: combina la sincronizzazione del progetto con una build Soong completa in un unico passaggio.

La finestra degli strumenti Soong (Visualizza > Finestre degli strumenti > Soong) mostra gli indicatori di stato in tempo reale per ogni nodo dell'attività di sincronizzazione, i pulsanti di build ad accesso rapido e l'esecuzione dei comandi Soong.


Build, deployment e navigazione di Android.bp nell'editor

ASfP fornisce il supporto dell'editor integrato per i file Android.bp:

Crea, esegui ed esegui il debug dei target dal gutter

Apri un file Android.bp nel progetto per creare o avviare i target da due icone gutter:

  • Icona di build (tutti i moduli denominati): viene visualizzata accanto a name: in ogni modulo denominato (cc_library_shared, java_library, rust_binary, android_app, e target di test) per creare il target Soong (Build "<module>").
  • Icona Esegui o Esegui il debug (*_test, *_test_host e android_app): fai clic su Esegui accanto a un modulo di test o a una dichiarazione android_app per eseguire o eseguire il debug del modulo. I moduli android_test eseguono il debug tramite atest, mentre i moduli cc_test* e rust_test* vengono avviati in LLDB integrato.

Creazione, esecuzione e debug di moduli dalle icone della barra laterale Android.bp

Configurazioni di esecuzione di deployment e flash contestuali

Per i moduli di cui è possibile eseguire il deployment nei file Android.bp, puoi creare e avviare configurazioni di esecuzione Soong Deploy contestuali dal gutter o dal menu contestuale con il tasto destro del mouse con le seguenti funzionalità:

  • Metodi di deployment: esegui il deployment utilizzando adb, script shell personalizzati, adevice, o flashall.
  • Hook di build Soong pre-esecuzione: crea automaticamente il modulo Soong di destinazione prima di eseguire il deployment sul dispositivo connesso o sul dispositivo virtuale Cuttlefish.

Selezione delle configurazioni di esecuzione Adevice o Flashall in ASfP

Passa dal codice sorgente a Android.bp e viceversa

Da qualsiasi file o directory di origine nella finestra degli strumenti Progetto, nella scheda dell'editor o nel menu contestuale dell'editor, fai clic con il tasto destro del mouse e seleziona Apri il file Android.bp corrispondente. ASfP individua ed evidenzia la dichiarazione del modulo Android.bp che compila il file, risolvendo i blocchi defaults, i pattern srcs con caratteri jolly e i link simbolici.

Azione del menu contestuale Apri file Android.bp corrispondente

Informazioni sull'editor Android.bp e documentazione dei suggerimenti

  • Navigazione tra i file e conteggi di utilizzo: fai clic tenendo premuto il tasto Ctrl su qualsiasi riferimento al modulo , file srcs o soong_config_module_type per passare alla relativa dichiarazione. Accanto ai nomi dei moduli e ai target srcs condivisi vengono visualizzati suggerimenti incorporati N Usages su cui è possibile fare clic e i moduli della libreria senza riferimenti vengono visualizzati in grigio.
  • Suggerimenti per la documentazione delle proprietà Soong: tieni il puntatore sopra qualsiasi proprietà in un Android.bp file, incluse le proprietà con ambito di architettura o target in target, arch e multilib, per visualizzare la firma del tipo Soong e la documentazione in linea.

Descrizioni comando della documentazione delle proprietà Android.bp e suggerimenti incorporati per l'utilizzo


Gestione dei dispositivi virtuali Cuttlefish e mirroring multischermo

ASfP include un plug-in Cuttlefish integrato per gli sviluppatori di piattaforme, Android Automotive OS (AAOS) e Software-Defined Vehicle (SDV) che lavorano con dispositivi virtuali Cuttlefish creati localmente:

  • Configurazione multidevice in Gestione dispositivi: crea e gestisci configurazioni di dispositivi virtuali Cuttlefish multidevice in Gestione dispositivi utilizzando il checkout AOSP locale ($ANDROID_BUILD_TOP e $ANDROID_PRODUCT_OUT).
  • Mirroring dello schermo multischermo nella finestra degli strumenti Cuttlefish: apri Visualizza > Finestre degli strumenti > Cuttlefish per il mirroring dello schermo multischermo Cuttlefish integrato, in modo da poter visualizzare e interagire contemporaneamente con più display automobilistici per i workflow AAOS e SDV.

Finestra dello strumento Cuttlefish e mirroring del display multischermo in ASfP