לפני שחרור Android 7.0, מערכת Android השתמשה ב-GNU Make באופן בלעדי כדי לתאר ולהפעיל את כללי הבנייה שלה. מערכת ה-build של Make נתמכת ברוב המקרים ונעשה בה שימוש נרחב, אבל בקנה מידה של Android היא הפכה לאיטית, מועדת לשגיאות, לא ניתנת להרחבה וקשה לבדיקה. מערכת ה-build של Soong מספקת את הגמישות הנדרשת ל-build של Android. אנחנו מבצעים שינויים משמעותיים במערכת הבנייה של Android, מוציאים משימוש את מערכת הבנייה Make (Android.mk
) ומחליפים אותה ב-Soong (Android.bp
).
לכן, מפתחי פלטפורמות צריכים לעבור מ-Make ל-Soong בהקדם האפשרי. כדי לקבל תמיכה, אפשר לשלוח שאלות לקבוצת Google Android Building.
מה זה Soong?
מערכת ה-build של Soong הושקה ב-Android 7.0 (Nougat) כדי להחליף את Make. הוא משתמש בכלי המשובט Kati GNU Make ובמרכיב מערכת הבנייה Ninja כדי להאיץ את הבנייה של Android.
בתיאור של מערכת Android Make Build בפרויקט הקוד הפתוח של Android (AOSP) מפורטים הוראות כלליות ושינויים במערכת Build לכותבי Android.mk. שם אפשר לקרוא על השינויים שצריך לבצע כדי לעבור מ-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 ספציפיות לבדיקות מופיעות במאמר הגדרת בנייה פשוטה.
תהליך המרה בסיסי
ההמרה של קובץ 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
מבצעים Build באמצעות
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.