تنسيق ملف Android.bp

إنّ ملفات 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"])
  • الخرائط ({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++ تعليقات // من سطر واحد

عوامل التشغيل

يمكن إلحاق السلاسل وقوائم السلاسل والخرائط باستخدام عامل التشغيل +. يمكن جمع الأعداد الصحيحة باستخدام عامل التشغيل +. ينتج عن إلحاق خريطة اتحاد المفاتيح في كلتا الخريطتين، مع إلحاق قيم أي مفاتيح موجودة في كلتا الخريطتين.

الشرطية

لا يدعم تطبيق Sayg الشروط الشرطية في ملفات Android.bp. بدلاً من ذلك، وتعقيد قواعد الإصدار التي قد تتطلب معالجة بعض الشروط الشرطية في تطبيق Go، حيث يمكن استخدام ميزات اللغة عالية المستوى، والتبعيات الضمنية التي تقدمها الشروط الشرطية. يتم تحويل معظم الشروط الشرطية إلى خريطة الموقع، حيث يتم تحديد إحدى القيم الموجودة في الخريطة وإلحاقها إلى المواقع ذات المستوى الأعلى.

على سبيل المثال، لدعم الملفات الخاصة بالبنية:

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

منسق تنسيق

يتضمن Samg تنسيقًا أساسيًا لملفات Blueprint، على غرار gofmt. لإعادة تنسيق الكل بشكل متكرر Android.bp ملف في الدليل الحالي، شغِّل:

bpfmt -w .

يتضمن التنسيق الأساسي مسافات بادئة مكونة من أربع مسافات، وأسطر جديدة بعد كل عنصر لقائمة متعددة العناصر، وفاصلة لاحقة في القوائم والخرائط.