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-projectnella 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-projecto seleziona ASfP > Progetto > Esporta configurazione in modello per salvare un file 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-projectper 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_hosteandroid_app): fai clic su Esegui accanto a un modulo di test o a una dichiarazioneandroid_appper eseguire o eseguire il debug del modulo. I moduliandroid_testeseguono il debug tramiteatest, mentre i modulicc_test*erust_test*vengono avviati in LLDB integrato.

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, oflashall. - 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.

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.

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
srcsosoong_config_module_typeper passare alla relativa dichiarazione. Accanto ai nomi dei moduli e ai targetsrcscondivisi vengono visualizzati suggerimenti incorporatiN Usagessu 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.bpfile, incluse le proprietà con ambito di architettura o target intarget,archemultilib, per visualizzare la firma del tipo Soong e la documentazione in linea.

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_TOPe$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.
