גרסת build של Android

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