File Android.bp
telah dirancang agar sederhana. Mereka tidak berisi
kondisional atau
pernyataan alur kontrol; semua kompleksitas ditangani oleh logika build yang ditulis dalam
Mulai. Jika memungkinkan, sintaksis dan semantik file Android.bp
akan serupa dengan
File Bazel BUILD.
Modul
Modul dalam file Android.bp
dimulai dengan
jenis modul
diikuti dengan kumpulan properti dalam format name: "value",
:
cc_binary {
name: "gzip",
srcs: ["src/test/minigzip.c"],
shared_libs: ["libz"],
stl: "none",
}
Setiap modul harus memiliki properti name
, dan nilainya harus unik di seluruh
semua file Android.bp
, kecuali untuk nilai properti name
di
namespace dan modul bawaan, yang mungkin berulang.
Properti srcs
menentukan file sumber yang digunakan untuk membuat modul, sebagai
daftar {i>string<i}. Anda dapat mereferensikan {i>output<i} dari modul lain yang menghasilkan
file sumber, seperti genrule
atau filegroup
, dengan menggunakan referensi modul
sintaksis ":<module-name>"
.
Untuk daftar jenis modul yang valid dan propertinya, lihat Referensi Modul Soong.
Jenis
Variabel dan propertinya diketik dengan ketat, dengan variabel yang secara dinamis didasarkan pada tugas pertama, dan properti yang disetel secara statis berdasarkan tipe modul. Tujuan jenis yang didukung adalah:
- Boolean (
true
ataufalse
) - Bilangan bulat (
int
) - String (
"string"
) - Daftar string (
["string1", "string2"]
) - Peta (
{key1: "value1", key2: ["value2"]}
)
Maps dapat berisi nilai dari jenis apa pun, termasuk peta bertingkat. Daftar dan peta mungkin memiliki koma di akhir setelah nilai terakhir.
Glob
Properti yang mengambil daftar file, seperti srcs
, juga dapat menggunakan glob
pola-pola tersebut. Pola Glob dapat berisi *
karakter pengganti UNIX normal, misalnya
*.java
. Pola Glob juga dapat berisi satu karakter pengganti **
sebagai jalur
, yang mencocokkan dengan
nol atau beberapa elemen jalur. Misalnya,
java/**/*.java
cocok dengan java/Main.java
dan
Pola java/com/android/Main.java
.
Variabel
File Android.bp
dapat berisi penetapan variabel tingkat atas:
gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
name: "gzip",
srcs: gzip_srcs,
shared_libs: ["libz"],
stl: "none",
}
Variabel tercakup dalam sisa file tempat variabel tersebut dideklarasikan,
sebagai file Blueprint turunan apa pun. Variabel tidak dapat diubah dengan satu pengecualian: variabel tersebut
dapat ditambahkan dengan tugas +=
, tapi hanya sebelum
yang direferensikan.
Komentar
File Android.bp
dapat berisi multibaris /* */
dan gaya C++ gaya C
komentar //
baris tunggal.
Operator
String, daftar string, dan peta dapat ditambahkan menggunakan operator +.
Bilangan bulat dapat dijumlahkan menggunakan operator +
. Menambahkan peta menghasilkan
gabungan kunci di kedua peta, menambahkan nilai dari setiap kunci yang ada di
kedua peta.
Bersyarat
Soong tidak mendukung kondisional dalam file Android.bp
. Sebagai gantinya,
kompleksitas dalam aturan build yang memerlukan kondisional ditangani di Go,
di mana fitur bahasa tingkat tinggi dapat digunakan, dan dependensi implisit
yang diperkenalkan oleh kondisional dapat dilacak. Sebagian besar kondisional dikonversi menjadi
properti peta, dengan salah satu nilai di peta dipilih dan ditambahkan
ke properti tingkat atas.
Misalnya, untuk mendukung file khusus arsitektur:
cc_library {
...
srcs: ["generic.cpp"],
arch: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}
Pemformat
Soong menyertakan pemformat kanonis untuk file Cetak biru, yang mirip dengan
gofmt. Untuk memformat ulang semua
Android.bp
file di direktori saat ini, jalankan:
bpfmt -w .
Format kanonis mencakup indentasi empat spasi, baris baru setelah setiap elemen dari daftar multielemen, dan koma di akhir daftar dan peta.