I file Android.bp
sono progettati per essere semplici. Non contengono condizioni o
istruzioni sul flusso di controllo; tutta la complessità viene gestita dalla logica di compilazione scritta
Vai. Quando possibile, la sintassi e la semantica dei file Android.bp
sono simili a
file Bazel BUILD.
Moduli
Un modulo in un file Android.bp
inizia con un
tipo di modulo
seguito da un insieme di proprietà nel formato name: "value",
:
cc_binary {
name: "gzip",
srcs: ["src/test/minigzip.c"],
shared_libs: ["libz"],
stl: "none",
}
Ogni modulo deve avere una proprietà name
e il valore deve essere univoco tra
tutti i file Android.bp
, ad eccezione dei valori delle proprietà name
in
e moduli predefiniti, che possono ripetersi.
La proprietà srcs
specifica i file di origine utilizzati per creare il modulo, come
di stringhe. Puoi fare riferimento all'output di altri moduli che generano
file di origine, come genrule
o filegroup
, utilizzando il riferimento del modulo
sintassi ":<module-name>"
.
Per un elenco dei tipi di moduli validi e delle relative proprietà, consulta Riferimento ai moduli Soong.
Tipi
Le variabili e le proprietà sono tipicamente digitate, con variabili basate dinamicamente su la prima assegnazione e le proprietà impostate in modo statico dal tipo di modulo. La i tipi supportati sono:
- Booleani (
true
ofalse
) - Numeri interi (
int
) - Stringhe (
"string"
) - Elenchi di stringhe (
["string1", "string2"]
) - Mappe (
{key1: "value1", key2: ["value2"]}
)
Le mappe possono contenere valori di qualsiasi tipo, comprese le mappe nidificate. Gli elenchi e le mappe possono contengono virgole finali dopo l'ultimo valore.
Glob
Anche le proprietà che accettano un elenco di file, come srcs
, possono assumere glob
pattern. I pattern glob possono contenere il normale carattere jolly UNIX *
, ad esempio
*.java
. I pattern glob possono anche contenere un singolo carattere jolly **
come percorso
che corrisponde a zero o più elementi del percorso. Ad esempio:
java/**/*.java
corrisponde sia a java/Main.java
che a
java/com/android/Main.java
pattern.
Variabili
Un file Android.bp
può contenere assegnazioni di variabili di primo livello:
gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
name: "gzip",
srcs: gzip_srcs,
shared_libs: ["libz"],
stl: "none",
}
Le variabili hanno come ambito il resto del file in cui vengono dichiarate.
dei progetti secondari. Le variabili sono immutabili, con una sola eccezione:
possono essere aggiunte a un compito +=
, ma solo prima che siano state
a cui viene fatto riferimento.
Commenti
I file Android.bp
possono contenere più righe di tipo C /* */
e stile C++
//
commenti su una sola riga.
Operatori
È possibile aggiungere stringhe, elenchi di stringhe e mappe utilizzando l'operatore +.
I numeri interi possono essere sommati utilizzando l'operatore +
. L'aggiunta di una mappa produce
di chiavi in entrambe le mappe, aggiungendo i valori di qualsiasi chiave
entrambe le mappe.
Condizionali
prestog non supporta le condizionali nei file Android.bp
. Invece,
le regole di creazione che richiederebbero condizionali vengono gestite in Go,
in cui è possibile usare funzionalità linguistiche di alto livello e dipendenze implicite.
introdotte da condizionali possono essere tracciate. La maggior parte dei condizionali viene convertita
proprietà map, in cui uno dei valori della mappa viene selezionato e aggiunto.
alle proprietà di primo livello.
Ad esempio, per supportare file specifici dell'architettura:
cc_library {
...
srcs: ["generic.cpp"],
arch: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}
Formattatore
prestog include un formattatore canonico per i file di Blueprint, simile al
gofmt. Per riformattare tutti gli elementi
Android.bp
file nella directory corrente, esegui:
bpfmt -w .
Il formato canonico include rientri di quattro spazi, nuove righe dopo ogni elemento di un elenco con più elementi e una virgola finale in elenchi e mappe.