פועלים לפי ההוראות בדף הזה כדי ליצור את Android.
הגדרת סביבת ה-build
בספריית העבודה, מריצים את הסקריפט envsetup.sh כדי להגדיר את סביבת הבנייה:
source build/envsetup.shהסקריפט הזה מייבא כמה פקודות שמאפשרות לעבוד עם קוד המקור של Android, כולל הפקודות שמופיעות בדף הזה. כדי לראות את המקור של הסקריפט, אפשר לעיין במאמר בנושא platform/build/envsetup.sh.
כדי להציג את העזרה המובנית, מקלידים hmm.
בחירת יעד
לפני שבונים את Android, צריך לזהות יעד לבנייה. יעד משקף את פלטפורמת היעד שעבורה אתם בונים. כדי לזהות את יעד ה-Build, משתמשים בפקודה lunch ואחריה מחרוזת שמייצגת את היעד. לדוגמה:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugיופיע סיכום של סביבת היעד והסביבה לבנייה:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================המחרוזת שמייצגת את היעד היא בפורמט הבא:
lunch product_name-release_config-build_variantהרכיבים במחרוזת הזו הם:
product_nameהוא שם המוצר שרוצים ליצור, כמוaosp_cf_x86_64_only_phoneאוaosp_husky. המספר הספציפי שלכם,product_name, יכול להיות בפורמט שונה במכשיר שלכם, אבל הפורמט שבו Google משתמשת במכשירים שלה כולל את הרכיבים הבאים:-
aospמתייחס ל-Android Open Source Platform (פלטפורמת Android בקוד פתוח). - (אופציונלי)
cfנכלל כשהיעד מיועד להפעלה באמולטור Cuttlefish. - ארכיטקטורה וחומרה (שם קוד), כמו
x86_64_only_phoneאוhusky, שהוא שם הקוד של Pixel 8 Pro. רשימת שמות הקוד של מכשירי Google זמינה במאמר שמות קוד של מכשירים.
-
הערך של
release_configמוגדר כהגדרת מוצר, כמו הגדרת המוצר של הפיתוח שנקראתaosp_current. הגדרת גרסה מזהה תכונות וקוד מסוימים שמוסתרים מאחורי דגלים להשקת תכונות, ומופעלים או מושבתים בגרסה. מידע נוסף על הגדרות של גרסאות זמין במאמר הגדרת ערכי השקה של דגלי תכונות.החלק
build_variantבמחרוזת יכול להיות אחד משלושת הערכים שבטבלה הבאה:build_variantתיאור userגרסת ה-build הזו מספקת גישה מוגבלת לאבטחה ומתאימה לייצור. userdebugגרסת ה-build הזו עוזרת למפתחי המכשירים להבין את הביצועים והעוצמה של גרסאות שנמצאות בפיתוח. כשמפתחים באמצעות גרסת build של userdebug, צריך לפעול לפי ההנחיות ל-userdebug.engלגרסה הזו של ה-build יש זמן build מהיר יותר, והיא מתאימה ביותר לפיתוח יומיומי אם לא חשוב לכם הביצועים והעוצמה.
אם מריצים את הפקודה lunch בלי ארגומנטים, מוצגת רשימה של יעדים נפוצים.
אפשר גם ליצור מחרוזות יעד משלכם על ידי הרכבת הרכיבים של מחרוזת היעד באמצעות המידע שבדף הזה ושמות הקוד שמייצגים חומרה ספציפית של Google, שמופיעים במאמר שמות קוד של מכשירים.
הצגת היעד הנוכחי
כדי לראות את ההגדרות הנוכחיות של ארוחת הצהריים, מריצים את הפקודה:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
יצירת הקוד
מריצים את הפקודה הבאה כדי ליצור את היעד. בהתאם למפרט של תחנת העבודה, יכול להיות שהגרסה הראשונה תיצור תוך פחות משעה, או תוך כמה שעות. הגרסאות הבאות ייבנו בזמן קצר בהרבה.
mהפלט של הבנייה יופיע ב-$OUT_DIR. אם יוצרים יעדים שונים, כל יעד שנוצר מופיע ב-$OUT_DIR.
הפקודה m מתבססת על החלק העליון של העץ, כך שאפשר להריץ את הפקודה m מתוך תיקיות משנה. אם משתנה הסביבה TOP מוגדר, הפקודה m משתמשת בו. אם לא מוגדר TOP, הפקודה m מחפשת בעץ החל מהספרייה הנוכחית, בניסיון למצוא את החלק העליון של העץ.
הפקודה m יכולה לטפל במשימות מקבילות באמצעות הארגומנט -jN. אם לא מספקים ארגומנט -j, מערכת הבנייה בוחרת באופן אוטומטי את מספר המשימות המקבילות שהיא חושבת שהוא אופטימלי למערכת שלכם.
כדי ליצור מודולים ספציפיים במקום את תמונת המכשיר המלאה, אפשר לציין את שמות המודולים בשורת הפקודה m. בנוסף, הפקודה m מספקת כמה יעדים פסאודו, שנקראים goals. לדוגמה, הפקודה m nothing לא יוצרת שום דבר, אבל היא מנתחת ומאמתת את מבנה ה-build. כדי לראות רשימה של יעדים תקינים, מקלידים m help.
פתרון בעיות שקשורות לבנייה (גרסה 8.0 או גרסה ישנה יותר)
אם אתם יוצרים גרסה של AOSP 8 או גרסה מוקדמת יותר, יכול להיות שהתהליך של m ייפסק אם תהיה בעיה בגרסה של Java שמותקנת אצלכם. לדוגמה, יכול להיות שתקבלו את ההודעה הבאה:
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
אלה הסיבות האפשריות והפתרונות:
- לא התקנתם את JDK הנכון, כפי שמפורט בקטעי JDK במאמר הגדרה לפיתוח AOSP (2.3 עד 8.0) .
- נראה שיש עוד JDK שהותקן בעבר בנתיב. מוסיפים את ה-JDK הנכון בתחילת הנתיב או מסירים את ה-JDK הבעייתי.