המרה מ-Make ל-Soong

לפני שחרור Android 7.0, מערכת Android השתמשה ב-GNU Make באופן בלעדי כדי לתאר ולהפעיל את כללי הבנייה שלה. מערכת ה-build של Make נתמכת בשימוש נרחב, אבל בקנה מידה של Android היא הפכה לאיטית, מועדת לשגיאות, לא ניתנת להרחבה וקשה לבדיקה. מערכת ה-build של Soong מספקת את הגמישות הנדרשת ל-build של Android. אנחנו מבצעים שינויים משמעותיים במערכת build של Android. אנחנו מוציאים משימוש את מערכת build Make ‏ (Android.mk) ומחליפים אותה ב-Soong ‏ (Android.bp).

לכן, מפתחי פלטפורמות צריכים לעבור מ-Make ל-Soong בהקדם האפשרי. כדי לקבל תמיכה, אפשר לשלוח שאלות לקבוצת Google‏ Android Building.

מה זה Soong?

מערכת ה-build של Soong הושקה ב-Android 7.0‏ (Nougat) כדי להחליף את Make. הוא משתמש בכלי המשובט Kati GNU ובמרכיב של מערכת build Ninja כדי להאיץ את ה-build של Android.

במאמר Android Make Build System בפרויקט הקוד הפתוח של Android ‏ (AOSP) מופיעות הוראות כלליות וגם Build System Changes for Android.mk Writers, שבהן מוסבר אילו שינויים צריך לבצע כדי לעבור מ-Make ל-Soong. הגדרות של מונחים חשובים מופיעות בערכים שקשורים לבנייה במילון המונחים, ופרטים מלאים מופיעים בSoong Modules Reference.

השוואה בין 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 ספציפיות לבדיקות מופיעות במאמר הגדרת build פשוטה.

תהליך המרה בסיסי

ההמרה של קובץ 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. כדי לוודא שההמרה בוצעה, משווים בין הארטיפקטים שנוצרו או מריצים בדיקות יחידה ובדיקות פונקציונליות.

  7. שומרים את השינויים ומעלים אותם לבדיקה.

מידע נוסף זמין במאמר בנושא פורמט של קובץ Android.bp.