แปลงจาก Make เป็น Soong

ก่อนที่จะเปิดตัว 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

  1. ตั้งค่าสภาพแวดล้อมของเทอร์มินัลและสร้างเครื่องมือ androidmk

    androidmk เป็นเครื่องมือบรรทัดคำสั่งที่แยกวิเคราะห์ไฟล์ Android.mk และพยายาม ส่งออกไฟล์ Android.bp ที่คล้ายกัน โดยจะแปลงAndroid.mkไฟล์ส่วนใหญ่เป็น Android.bp ได้โดยไม่ต้องทำการเปลี่ยนแปลงด้วยตนเองหรือทำการเปลี่ยนแปลงเพียงเล็กน้อย

    cd <root-of-the-tree>
    source build/envsetup.sh
    lunch <lunch-target>
    m androidmk
    
  2. สร้างด้วย Android.mk: sh m <module-name>

  3. เรียกใช้androidmkเครื่องมือ Conversion โดยทำดังนี้ sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. แก้ไขไฟล์ Android.bp ด้วยตนเอง

    • แก้ไขคำเตือนที่androidmkเครื่องมือแสดง
    • คงไว้หรือเพิ่มส่วนหัวของลิขสิทธิ์ หากเพิ่มใหม่ ให้ใช้ปีปัจจุบัน
  5. นำไฟล์ Android.mk ออกและสร้างด้วยไฟล์ Android.bp

  6. ตรวจสอบ Conversion โดยเปรียบเทียบอาร์ติแฟกต์ที่สร้างขึ้นหรือ เรียกใช้การทดสอบหน่วยและการทดสอบฟังก์ชัน

  7. บันทึกการเปลี่ยนแปลงและอัปโหลดเพื่อรับการตรวจสอบ

ดูข้อมูลเพิ่มเติมได้ที่รูปแบบไฟล์ Android.bp