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

ก่อนที่จะเปิดตัว 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 โดยทั่วไป การแปลงจะเป็นไปตามขั้นตอนต่อไปนี้

  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 : sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

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

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

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

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

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