פועלים לפי ההוראות בדף הזה כדי ליצור את 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 הבעייתי.