פועלים לפי ההוראות שבדף הזה כדי לבנות את Android.
הגדרה של סביבת ה-build
מתוך ספריית העבודה, יוצרים את הסקריפט envsetup.sh
להגדרה
את סביבת ה-build שלך:
source build/envsetup.sh
הסקריפט הזה מייבא כמה פקודות שמאפשרות לך לעבוד עם Android
של קוד המקור, כולל הפקודות שבהן נעשה שימוש בדף הזה. כדי להציג את המקור של
סקריפט, לעיין
platform/build/envsetup.sh
כדי להציג את העזרה המובנית, מקלידים hmm
.
בחירת יעד
לפני שיוצרים את Android, צריך לזהות יעד שרוצים ליצור. יעד
משקף את פלטפורמת היעד שעבורה אתם בונים. כדי לזהות את
היעד ל-build, משתמשים בפקודה lunch
ואחריה מחרוזת שמייצגת
היעד. לדוגמה:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
הצגת היעד הנוכחי
כדי לראות את ההגדרות הנוכחיות של ארוחת הצהריים, מריצים את הפקודה:
echo "$TARGET_PRODUCT-$TARGET_RELEASE-$TARGET_BUILD_VARIANT"
המחרוזת שמייצגת את היעד היא בפורמט הבא:
lunch product_name-release-build_variant
הרכיבים של המחרוזת הזו:
product_name הוא שם המוצר שרוצים כמו
aosp_cf_x86_64_phone
אוaosp_husky
. הפרטים הספציפיים שלך product_name יכול לפעול בפורמט שמתאים למכשיר שלכם, אבל הפורמט שבו Google משתמשת במכשירים שלה כולל את הרכיבים הבאים:- המונח
aosp
מתייחס לפלטפורמת הקוד הפתוח של Android. - (אופציונלי) הפרמטר
cf
נכלל כשהיעד מיועד לפעול בתוך אמולטור דיונון. - ארכיטקטורה וחומרה (שם קוד), כמו
x86_64_phone
אוhusky
שהוא שם הקוד של Pixel 8 Pro. לרשימת שמות קוד ל-Google מכשירים, לראות שמות הקוד של המכשירים.
- המונח
הערך release מוגדר ל-
trunk_staging
.החלק build_variant של המחרוזת יכול להיות אחד מ- שלושת הערכים בטבלה הבאה:
build_variant תיאור user
לווריאנט הזה של ה-build הזה יש גישה מוגבלת לאבטחה, והוא מתאים לייצור. userdebug
הווריאנט הזה של ה-build הזה עוזר למפתחי המכשירים להבין את הביצועים ואת העוצמה של גרסאות בפיתוח. כשמפתחים עם build מסוג userdebug
, צריך לפעול בהתאם להנחיות לניפוי באגים למשתמשים.eng
לווריאנט הזה של ה-build הזה יש זמן build מהיר יותר והוא מתאים במיוחד לפיתוח יומיומי אם לא חשובים לכם הביצועים והכוח.
אם מריצים את הפקודה lunch
ללא ארגומנטים, מוצגת רשימה של יעדים נפוצים.
אפשר גם ליצור מחרוזות יעד משלכם על ידי חיבור הרכיבים של
מחרוזת היעד תוך שימוש במידע שבדף הזה ובשמות הקוד
שמייצגים חומרה ספציפית של Google
שמות הקוד של המכשירים.
כתיבת הקוד
מריצים את הפקודה הבאה כדי ליצור את היעד. בהתאם למפרט של תחנת העבודה שלך, ה-build הראשון עשוי להימשך פחות משעה, מספר שעות. גרסאות ה-build הבאות נמשכות פחות זמן באופן משמעותי.
$ m
הפלט הראשון שאתם אמורים לראות הוא תקציר של היעד והפיתוח סביבה:
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
הפלט של ה-build יופיע ב-$OUT_DIR
. אם
ליצור יעדים שונים, כל גרסת build של יעד
$OUT_DIR
הפקודה m
מתבססת על ראש העץ, כך שאפשר להריץ את m
מתוך העץ
ספריות משנה. אם הגדרתם את משתנה הסביבה TOP
, הפקודה m
משתמש בה. אם המדיניות TOP
לא מוגדרת, הפקודה m
מחפשת את העץ
הספרייה הנוכחית, מנסה למצוא את ראש העץ.
הפקודה m
יכולה לטפל במשימות מקבילות באמצעות ארגומנט -jN
. אחרת
מספקים ארגומנט -j
, מערכת ה-build בוחרת באופן אוטומטי משימה מקבילה
שהיא חושבת שהיא אופטימלית למערכת שלכם.
אפשר ליצור מודולים ספציפיים במקום את התמונה המלאה של המכשיר,
שמות המודולים בשורת הפקודה m
. בנוסף, הפקודה m
מספקת
כמה יעדים לכאורה, שנקראים מטרות עסקיות. לדוגמה, m nothing
לא יוצר
כל דבר, אבל מנתח ומאמת את מבנה ה-build. לרשימה של
יעדים, מקלידים m help
.
פתרון בעיות ב-build (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 הבעייתי.