Android.bp dosya biçimi

Android.bp dosyaları, tasarımı gereği basittir. Koşul veya kontrol akışı ifadeleri; tüm karmaşıklık, Git. Mümkün olduğunda Android.bp dosyalarının söz dizimi ve anlamları şuna benzer: Bazel BUILD dosyaları.

Modüller

Android.bp dosyasındaki bir modül, modül türü ardından name: "value", biçiminde bir özellik grubu gelir:

cc_binary {
    name: "gzip",
    srcs: ["src/test/minigzip.c"],
    shared_libs: ["libz"],
    stl: "none",
}

Her modülde name özelliği olmalı ve değer, içindeki name özellik değerleri dışında, Android.bp dosyanın tümü ad alanlarını ve önceden oluşturulmuş modülleri kapsar.

srcs özelliği, modülü oluşturmak için kullanılan kaynak dosyaları dize listesidir. Üretken, yüksek performanslı diğer modüllerin modül referansından yararlanarak genrule veya filegroup gibi kaynak dosyalar söz dizimi ":<module-name>".

Geçerli modül türlerinin ve özelliklerinin listesi için Soong Modülleri Referansı.

Türler

Değişkenler ve özellikler güçlü bir şekilde yazılmıştır. Değişkenler ilk atamayı ve modül türüne göre statik olarak ayarlanan özellikleri içerir. İlgili içeriği oluşturmak için kullanılan desteklenen türler şunlardır:

  • Boole (true veya false)
  • Tam sayılar (int)
  • Dizeler ("string")
  • Dize listeleri (["string1", "string2"])
  • Haritalar ({key1: "value1", key2: ["value2"]})

Haritalar, iç içe yerleştirilmiş haritalar da dahil olmak üzere herhangi bir türde değeri içerebilir. Listeler ve haritalar son değerden sonra virgül koyun.

Küreler

Dosya listesi alan srcs gibi özellikler de glob alabilir belirler. Küre kalıpları, normal UNIX joker karakterini (*) içerebilir. Örneğin, *.java. Küre kalıpları, yol olarak tek bir ** joker karakteri de içerebilir öğesi oluşturun. Örneğin, java/**/*.java, hem java/Main.java hem de java/com/android/Main.java kalıplar.

Değişkenler

Android.bp dosyası, üst düzey değişken atamaları içerebilir:

gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
    name: "gzip",
    srcs: gzip_srcs,
    shared_libs: ["libz"],
    stl: "none",
}

Değişkenler, tanımlandıkları dosyanın geri kalanına da dahil edilir dosyaları olarak kullanabilirsiniz. Değişkenler bir istisna dışında sabittir: ancak öncesinde bir += atamasıyla eklenebilir referans alın.

Yorumlar

Android.bp dosyaları, C stili çok satırlı /* */ ve C++ stili içerebilir tek satırlık // yorumları.

Operatörler

Dizeler, dize listeleri ve haritalar + operatörü kullanılarak eklenebilir. Tam sayılar + operatörü kullanılarak toplanabilir. Bir harita eklendiğinde bulunan tüm anahtarların değerlerini ekleyerek her iki eşlemedeki anahtarların birleşimini iki harita.

Koşullar

Yakındag, Android.bp dosyalarında koşulları desteklemez. Bunun yerine Koşullu kurallar gerektirecek derleme kurallarının karmaşıklığı Go'da işlenir, üst düzey dil özelliklerinin kullanılabileceği koşullar ve dolaylı bağımlılıklar koşullar tarafından ortaya konabilir. Çoğu koşul, bir haritadaki değerlerden birinin seçilip eklendiği harita mülkü üst düzey mülklere iletir.

Örneğin, mimariye özel dosyaları desteklemek için:

cc_library {
    ...
    srcs: ["generic.cpp"],
    arch: {
        arm: {
            srcs: ["arm.cpp"],
        },
        x86: {
            srcs: ["x86.cpp"],
        },
    },
}

Biçimlendirici

Shortg, Blueprint dosyaları için şuna benzer bir standart biçimlendirici içerir: gofmt olarak değiştirin. Tümünü yinelenmeli olarak yeniden biçimlendirmek için Geçerli dizindeki Android.bp dosya için şu komutu çalıştırın:

bpfmt -w .

Standart biçimde dört boşluk girintisi ve her öğeden sonra yeni satırlar bulunur (birden çok öğeli liste ve listelerde ve haritalarda son virgüldür).