לפני שחרור 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. באופן כללי, אלה השלבים שמתבצעים בהמרה:
מגדירים את סביבת הטרמינל ויוצרים את הכלי
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כלי ההמרה:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bpעורכים ידנית את הקובץ
Android.bp:- מטפלים בכל האזהרות שמופיעות בכלי
androidmk. - שמירה או הוספה של כותרת זכויות יוצרים. אם מוסיפים תעודה חדשה, צריך להשתמש בשנה הנוכחית.
- מטפלים בכל האזהרות שמופיעות בכלי
מסירים את הקובץ
Android.mkויוצרים את הקובץAndroid.bp.כדי לוודא שההמרה בוצעה, משווים בין הארטיפקטים שנוצרו או מריצים בדיקות יחידה ובדיקות פונקציונליות.
שומרים את השינויים ומעלים אותם לבדיקה.
מידע נוסף זמין במאמר בנושא פורמט של קובץ Android.bp.