Android.bp
-Dateien sind standardmäßig einfach. Sie enthalten keine Bedingungen oder
Anweisungen zur Ablaufsteuerung; wird die gesamte Komplexität von Build-Logik
Los. Wenn möglich ähneln Syntax und Semantik von Android.bp
-Dateien Folgendem:
Bazel-Build-Dateien vom Typ "Build"
Module
Ein Modul in einer Android.bp
-Datei beginnt mit einem
Modultyp
gefolgt von einer Reihe von Properties im Format name: "value",
:
cc_binary {
name: "gzip",
srcs: ["src/test/minigzip.c"],
shared_libs: ["libz"],
stl: "none",
}
Jedes Modul muss ein name
-Attribut haben, wobei der Wert in allen Bereichen eindeutig sein muss
alle Android.bp
-Dateien mit Ausnahme der name
-Attributwerte in
Namespaces und vordefinierte Module, die sich wiederholen können.
Das Attribut srcs
gibt die Quelldateien an, die zum Erstellen des Moduls verwendet werden,
Liste mit Zeichenfolgen. Sie können auf die Ergebnisse anderer Module verweisen,
Quelldateien wie genrule
oder filegroup
mithilfe der Modulreferenz
":<module-name>"
.
Eine Liste der gültigen Modultypen und ihrer Eigenschaften finden Sie in der Referenz zu Soong-Modulen
Typen
Variablen und Eigenschaften sind stark typisiert, wobei Variablen dynamisch basierend auf die erste Zuweisung und Eigenschaften, die statisch durch den Modultyp festgelegt werden. Die Unterstützte Typen sind:
- Boolesch (
true
oderfalse
) - Ganzzahlen (
int
) - Strings (
"string"
) - Stringlisten (
["string1", "string2"]
) - Karten (
{key1: "value1", key2: ["value2"]}
)
Karten können Werte beliebiger Typen enthalten, einschließlich verschachtelter Karten. Listen und Karten können Nach dem letzten Wert stehen Kommas.
Globs
Attribute wie srcs
, die eine Liste von Dateien enthalten, können auch Glob übernehmen.
Muster zu erkennen. Glob-Muster können beispielsweise den normalen UNIX-Platzhalter *
enthalten.
*.java
. Glob-Muster können auch einen einzelnen **
-Platzhalter als Pfad enthalten
-Element, das mit null oder mehr Pfadelementen übereinstimmt. Beispiel:
java/**/*.java
stimmt sowohl mit java/Main.java
als auch mit
java/com/android/Main.java
-Muster.
Variablen
Eine Android.bp
-Datei kann Variablenzuweisungen der obersten Ebene enthalten:
gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
name: "gzip",
srcs: gzip_srcs,
shared_libs: ["libz"],
stl: "none",
}
Variablen gelten für den Rest der Datei, in der sie deklariert sind.
als untergeordnete Blueprint-Dateien. Variablen sind mit einer Ausnahme unveränderlich: Sie
können mit einer +=
-Aufgabe angehängt werden, aber nur bevor sie
auf die verwiesen wird.
Kommentare
Android.bp
-Dateien können mehrzeilige /* */
- und C++-Stile enthalten.
einzeilige //
-Kommentare.
Netzbetreiber
Strings, Stringlisten und Zuordnungen können mithilfe des Operators + (+) angehängt werden.
Ganzzahlen können mit dem +
-Operator addiert werden. Durch das Anhängen einer Karte wird die
Union von Schlüsseln in beiden Zuordnungen, wobei die Werte aller Schlüssel angehängt werden, die in
beiden Karten.
Bedingungen
Bedingungen in Android.bp
-Dateien werden von Song nicht unterstützt. Stattdessen
die Komplexität von Regeln
zu definieren, für die Bedingungen erforderlich sind,
in denen High-Level-Sprachfunktionen verwendet werden können, und implizite Abhängigkeiten
die durch Bedingungen erzeugt werden,
nachverfolgt werden können. Die meisten Bedingungen werden in einen
map -Eigenschaft, bei der einer der Werte in der Karte ausgewählt und angehängt wird.
zu den übergeordneten Properties.
So werden beispielsweise architekturspezifische Dateien unterstützt:
cc_library {
...
srcs: ["generic.cpp"],
arch: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}
Formatierer
Soong verfügt über einen kanonischen Formatierer für Blueprint-Dateien, ähnlich wie
gofmt Um alle Elemente rekursiv neu zu formatieren,
Android.bp
-Dateien im aktuellen Verzeichnis führen Sie folgenden Befehl aus:
bpfmt -w .
Das kanonische Format umfasst Einzüge mit vier Leerzeichen, neue Zeilen nach jedem Element. Multielement-Liste und eines nachgestellten Kommas in Listen und Zuordnungen.