ก่อนที่จะเปิดตัว Android 7.0 นั้น Android ใช้
GNU Make
แต่เพียงผู้เดียวเพื่ออธิบายและเรียกใช้กฎการสร้าง ระบบบิลด์ Make ได้รับการสนับสนุนและใช้งานอย่างแพร่หลาย แต่เมื่อขยายขนาดเป็นระดับของ Android แล้ว ระบบจะทำงานช้า มีข้อผิดพลาดได้ง่าย ขยายขนาดได้ยาก และทดสอบได้ยาก ระบบบิลด์ Soong มีความยืดหยุ่นที่จำเป็นสำหรับการสร้าง Android เรากำลังทำการเปลี่ยนแปลงที่สำคัญในระบบบิลด์ Android โดยเลิกใช้งานระบบบิลด์ Make (Android.mk) และแทนที่ด้วย Soong (Android.bp)
ด้วยเหตุนี้ นักพัฒนาแพลตฟอร์มจึงควรเปลี่ยนจาก Make ไปใช้ Soong โดยเร็วที่สุด ส่งคำถามไปที่ Android Building Google Group เพื่อรับการสนับสนุน
Soong คืออะไร
ระบบบิลด์ Soong เปิดตัวใน Android 7.0 (Nougat) เพื่อแทนที่ Make โดยใช้ประโยชน์จากเครื่องมือโคลน Kati GNU Make และคอมโพเนนต์ระบบบิลด์ Ninja เพื่อเร่งความเร็วในการสร้าง Android
ดูคำอธิบาย ระบบการสร้าง Android Make ใน Android Open Source Project (AOSP) เพื่อดูวิธีการทั่วไป และ การเปลี่ยนแปลงระบบการสร้างสำหรับผู้เขียน Android.mk เพื่อเรียนรู้เกี่ยวกับ การแก้ไขที่จำเป็นในการปรับจาก Make เป็น Soong ดูรายการที่เกี่ยวข้องกับการสร้างในอภิธานศัพท์เพื่อดูคำจำกัดความของคำสำคัญ และข้อมูลอ้างอิงโมดูล Soong เพื่อดูรายละเอียดทั้งหมด
การเปรียบเทียบ Make กับ Soong
ต่อไปนี้เป็นการเปรียบเทียบการกำหนดค่า Make กับ Soong ที่ทำสิ่งเดียวกันในไฟล์การกำหนดค่า Soong (Blueprint หรือ .bp)
ตัวอย่าง Make
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux
LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call \
all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)
ตัวอย่าง Soong
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
ดูตัวอย่างการกำหนดค่า Soong ที่เฉพาะเจาะจงสำหรับการทดสอบได้ที่ การกำหนดค่าบิลด์อย่างง่าย
ขั้นตอนการแปลงพื้นฐาน
การแปลงไฟล์ Android.mk เป็นไฟล์ Android.bp มักจะเป็นไปตามเวิร์กโฟลว์ทั่วไปนี้โดยใช้เครื่องมือช่วยเหลือ androidmk โดยทั่วไป การแปลงจะเป็นไปตามขั้นตอนต่อไปนี้
ตั้งค่าสภาพแวดล้อมเทอร์มินัลและสร้างเครื่องมือ
androidmkandroidmkเป็นเครื่องมือบรรทัดคำสั่งที่แยกวิเคราะห์ไฟล์Android.mkและพยายามแสดงผลไฟล์Android.bpที่คล้ายกัน โดยสามารถแปลงไฟล์Android.mkส่วนใหญ่เป็นAndroid.bp ได้โดยมีการเปลี่ยนแปลงด้วยตนเองเพียงเล็กน้อยหรือไม่มีเลยcd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmkสร้างด้วย
Android.mk:sh m <module-name>เรียกใช้เครื่องมือการแปลง
androidmk:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bpแก้ไขไฟล์
Android.bpด้วยตนเอง- จัดการคำเตือนที่เครื่องมือ
androidmkแสดง - เก็บหรือเพิ่มส่วนหัวของลิขสิทธิ์ หากเพิ่มส่วนหัวใหม่ ให้ใช้ปีปัจจุบัน
- จัดการคำเตือนที่เครื่องมือ
นำไฟล์
Android.mkออกและสร้างด้วยไฟล์Android.bpตรวจสอบการแปลงโดยการเปรียบเทียบอาร์ติแฟกต์ที่สร้างขึ้น หรือ เรียกใช้การทดสอบ Unit Test และการทดสอบฟังก์ชัน
บันทึกการเปลี่ยนแปลงและอัปโหลดเพื่อรับการตรวจสอบ
ดูข้อมูลเพิ่มเติมได้ที่ รูปแบบไฟล์ Android.bp