ก่อนที่จะเปิดตัว Android 7.0 นั้น Android ใช้
GNU Make
เพื่ออธิบายและเรียกใช้กฎการสร้างโดยเฉพาะ ระบบบิลด์ Make ได้รับการรองรับและใช้งานอย่างกว้างขวาง แต่เมื่อมีขนาดเท่ากับ Android ก็เริ่มทำงานช้า มีข้อผิดพลาดได้ง่าย ขยายขนาดไม่ได้ และทดสอบได้ยาก ระบบบิลด์ Soong
มีความยืดหยุ่นที่จำเป็นสำหรับการบิลด์ Android เรากำลังทำการเปลี่ยนแปลงครั้งสำคัญ
ในระบบบิลด์ของ Android โดยจะเลิกใช้งานระบบบิลด์ Make (Android.mk
)
และแทนที่ด้วย Soong (Android.bp
)
ด้วยเหตุนี้ เราจึงคาดหวังให้นักพัฒนาแพลตฟอร์มเปลี่ยนจาก Make ไปใช้ Soong โดยเร็วที่สุด ส่งคำถามไปที่กลุ่ม Google ของ Android Building เพื่อรับการสนับสนุน
Soong คืออะไร
ระบบบิลด์ Soong เปิดตัวใน Android 7.0 (Nougat) เพื่อแทนที่ Make โดยใช้ประโยชน์จากเครื่องมือโคลน GNU Make Kati และคอมโพเนนต์ระบบบิลด์ Ninja เพื่อเร่งความเร็วการบิลด์ Android
ดูคำอธิบายระบบบิลด์ Android Make ในโปรเจ็กต์ Android Open Source (AOSP) เพื่อดูวิธีการทั่วไปและ การเปลี่ยนแปลงระบบบิลด์สำหรับผู้เขียน Android.mk เพื่อดูข้อมูลเกี่ยวกับการ แก้ไขที่จำเป็นในการปรับจาก Make เป็น Soong ดูคำจำกัดความของคำศัพท์สำคัญได้ใน รายการที่เกี่ยวข้องกับการสร้างในอภิธานศัพท์ และดูรายละเอียดทั้งหมดได้ในการอ้างอิงโมดูล Soong
การเปรียบเทียบ Make และ Soong
ต่อไปนี้คือการเปรียบเทียบการกำหนดค่า Make กับ Soong ที่ทำสิ่งเดียวกันในไฟล์การกำหนดค่า Soong (Blueprint หรือ .bp
)
สร้างตัวอย่าง
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
โดยทั่วไปแล้ว ขั้นตอนต่อไปนี้จะดำเนินการใน Conversion
ตั้งค่าสภาพแวดล้อมของเทอร์มินัลและสร้างเครื่องมือ
androidmk
androidmk
เป็นเครื่องมือบรรทัดคำสั่งที่แยกวิเคราะห์ไฟล์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
เครื่องมือ Conversion โดยทำดังนี้sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
แก้ไขไฟล์
Android.bp
ด้วยตนเอง- แก้ไขคำเตือนที่
androidmk
เครื่องมือแสดง - คงไว้หรือเพิ่มส่วนหัวของลิขสิทธิ์ หากเพิ่มใหม่ ให้ใช้ปีปัจจุบัน
- แก้ไขคำเตือนที่
นำไฟล์
Android.mk
ออกและสร้างด้วยไฟล์Android.bp
ตรวจสอบ Conversion โดยเปรียบเทียบอาร์ติแฟกต์ที่สร้างขึ้นหรือ เรียกใช้การทดสอบหน่วยและการทดสอบฟังก์ชัน
บันทึกการเปลี่ยนแปลงและอัปโหลดเพื่อรับการตรวจสอบ
ดูข้อมูลเพิ่มเติมได้ที่รูปแบบไฟล์ Android.bp