إنّ ملفات Android.bp
بسيطة في التصميم. لا تحتوي على شروط أو
والتحكم في بيانات التدفق؛ تتم معالجة جميع التعقيدات من خلال منطق البناء مكتوب
هيا. إن أمكن، تكون بنية ملفات Android.bp
ودلالاتها مشابهة لما يلي:
ملفات Bazel BUILD.
الوحدات
تبدأ الوحدة في ملف Android.bp
بنوع الوحدة يليه مجموعة من السمات بتنسيق name: "value",
:
cc_binary {
name: "gzip",
srcs: ["src/test/minigzip.c"],
shared_libs: ["libz"],
stl: "none",
}
يجب أن تحتوي كل وحدة على سمة name
، ويجب أن تكون القيمة فريدة في
جميع ملفات Android.bp
، باستثناء قيم سمة name
في
مساحات الاسماء والوحدات المُنشأة مسبقًا، والتي قد تتكرّر.
تحدّد السمة srcs
الملفات المصدر المستخدَمة لإنشاء الوحدة، على هيئة
قائمة بسلاسل. يمكنك الرجوع إلى مخرجات الوحدات الأخرى التي تنتج
ملفات المصدر، مثل genrule
أو filegroup
، باستخدام مرجع الوحدة
البنية ":<module-name>"
.
للحصول على قائمة بأنواع الوحدات الصالحة وخصائصها، يمكنك مراجعة مرجع وحدات Soong.
الأنواع
تكون المتغيرات والخصائص مكتوبة بحروف كبيرة، وتستنِد المتغيرات ديناميكيًا إلى المهمة الأولى، والخصائص التي يتم تعيينها بشكل ثابت حسب نوع الوحدة. الأنواع المتوافقة هي:
- القيم المنطقية (
true
أوfalse
) - الأعداد الصحيحة (
int
) - السلاسل (
"string"
) - قوائم السلاسل (
["string1", "string2"]
) - خرائط Google (
{key1: "value1", key2: ["value2"]}
)
يمكن أن تحتوي الخرائط على قيم من أي نوع، بما في ذلك الخرائط المتداخلة. يمكن للقوائم والخرائط تحتوي على فواصل لاحقة بعد القيمة الأخيرة.
الكرة الأرضية
يمكن للخصائص التي تحتفظ بقائمة من الملفات، مثل srcs
، أن تستخدم أيضًا glob
أنماط. على سبيل المثال، يمكن أن تحتوي أنماط الكرة الأرضية على حرف بدل UNIX العادي *
.
*.java
يمكن أن تحتوي أنماط الكرة الأرضية أيضًا على حرف بدل **
واحد كمسار.
الذي لا يطابق صفر أو أكثر من عناصر المسار. على سبيل المثال:
تتطابق السمة java/**/*.java
مع كل من java/Main.java
أنماط java/com/android/Main.java
المتغيّرات
قد يحتوي ملف Android.bp
على عمليات تخصيص المتغيّرات في المستوى الأعلى:
gzip_srcs = ["src/test/minigzip.c"],
cc_binary {
name: "gzip",
srcs: gzip_srcs,
shared_libs: ["libz"],
stl: "none",
}
يتمّ تحديد نطاق المتغيّرات على أنّه الجزء المتبقّي من الملف الذي تمّ الإعلان عنه فيه، بالإضافة إلى
أي ملفات "مخطّط عمل" فرعية. المتغيّرات غير قابلة للتغيير باستثناء واحد: يمكن
إضافتها باستخدام عملية ضبط +=
، ولكن قبل أن تتم
الإشارة إليها فقط.
التعليقات
Android.bp
يمكن أن تحتوي الملفات على نمط C متعدد الأسطر /* */
ونمط C++
تعليقات //
من سطر واحد
عوامل التشغيل
يمكن إلحاق السلاسل وقوائم السلاسل والخرائط باستخدام عامل التشغيل +.
يمكن جمع الأعداد الصحيحة باستخدام عامل التشغيل +
. يؤدي إلحاق خريطة إلى توليد
اتحاد المفاتيح في كلتا الخريطتَين، مع إلحاق قيم أي مفاتيح متوفّرة في
كلتا الخريطتَين.
الشرطية
لا تتيح أداة Soong استخدام الشروط في ملفات Android.bp
. بدلاً من ذلك،
وتعقيد قواعد الإصدار التي قد تتطلب معالجة بعض الشروط الشرطية في تطبيق Go،
حيث يمكن استخدام ميزات اللغة عالية المستوى، والتبعيات الضمنية
التي تقدمها الشروط الشرطية. يتم تحويل معظم الشروط الشرطية إلى
خريطة الموقع، حيث يتم تحديد إحدى القيم الموجودة في الخريطة وإلحاقها
إلى المواقع ذات المستوى الأعلى.
على سبيل المثال، لدعم الملفات الخاصة بالبنية:
cc_library {
...
srcs: ["generic.cpp"],
arch: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}
أداة التنسيق
يتضمّن Soong أداة تنسيق أساسي لملفات Blueprint، مثل
gofmt. لإعادة تنسيق الكل بشكل متكرر
Android.bp
ملف في الدليل الحالي، شغِّل:
bpfmt -w .
يتضمن التنسيق الأساسي مسافات بادئة مكونة من أربع مسافات، وأسطر جديدة بعد كل عنصر لقائمة متعددة العناصر، وفاصلة لاحقة في القوائم والخرائط.