รูปแบบไฟล์ 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 ได้ รูปแบบ รูปแบบ Glob อาจมีไวลด์การ์ด UNIX ปกติได้ เช่น * *.java รูปแบบ Glob อาจมีไวลด์การ์ด ** เดี่ยวเป็นเส้นทางได้ด้วย ที่ตรงกับเอลิเมนต์เส้นทางศูนย์รายการขึ้นไป ตัวอย่างเช่น 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",
}

ตัวแปรจะกําหนดขอบเขตอยู่ที่ส่วนที่เหลือของไฟล์ที่มีการประกาศ รวมทั้ง เป็นไฟล์พิมพ์เขียวย่อยทุกไฟล์ ตัวแปรจะเปลี่ยนแปลงไม่ได้โดยมีข้อยกเว้น 1 ข้อ นั่นคือ สามารถต่อท้ายด้วยงาน += ได้ แต่จะต้องส่งก่อน มีการอ้างอิงถึง

ความคิดเห็น

Android.bp ไฟล์สามารถมีบรรทัดหลายบรรทัดสไตล์ C ได้ /* */ และสไตล์ C++ ความคิดเห็นแบบบรรทัดเดียว //

ผู้ให้บริการ

คุณสามารถต่อท้ายสตริง รายการสตริง และแผนที่ได้โดยใช้โอเปอเรเตอร์ + คุณสามารถบวกจำนวนเต็มได้โดยใช้โอเปอเรเตอร์ + การใส่แผนที่ต่อท้ายจะสร้าง การรวมคีย์ในทั้ง 2 แมป การนำค่าของคีย์ใดๆ ที่อยู่ใน ทั้ง 2 แผนที่

เงื่อนไข

Soong ไม่รองรับเงื่อนไขในไฟล์ Android.bp แต่ ความซับซ้อนในการสร้างกฎที่จะต้องใช้เงื่อนไขจะได้รับการจัดการใน Go ที่สามารถใช้ฟีเจอร์ภาษาระดับสูงได้ และการพึ่งพาโดยปริยาย จะเป็นไปตามเงื่อนไข เงื่อนไขส่วนใหญ่จะถูกแปลงเป็น คุณสมบัติแผนที่ ที่มีการเลือกค่าใดค่าหนึ่งในแผนที่และต่อท้ายแล้ว กับพร็อพเพอร์ตี้ระดับบนสุด

เช่น หากต้องการให้รองรับไฟล์เฉพาะสถาปัตยกรรม ให้ทำดังนี้

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

ตัวจัดรูปแบบ

Soong มีตัวจัดรูปแบบ Canonical สำหรับไฟล์ Blueprint ซึ่งคล้ายกับ gofmt หากต้องการจัดรูปแบบทั้งหมดใหม่ที่เกิดซ้ำ Android.bp ไฟล์ในไดเรกทอรีปัจจุบัน ให้เรียกใช้:

bpfmt -w .

รูปแบบ Canonical มีการเยื้องเว้นวรรค 4 บรรทัด บรรทัดใหม่หลังองค์ประกอบทั้งหมด ของรายการหลายองค์ประกอบ และจุลภาคต่อท้ายในรายการและแผนที่