בנה אנדרואיד

עקוב אחר ההוראות בדף זה כדי לבנות אנדרואיד.

הגדר את סביבת הבנייה שלך

מתוך ספריית העבודה שלך, מקור את הסקריפט envsetup.sh כדי להגדיר את סביבת הבנייה שלך:

$ source build/envsetup.sh

סקריפט זה מייבא מספר פקודות המאפשרות לך לעבוד עם קוד המקור של אנדרואיד, כולל הפקודות המשמשות בדף זה. כדי להציג את מקור הסקריפט, עיין ב- platform/build/envsetup.sh . כדי להציג את העזרה המובנית, הקלד hmm .

בחר יעד

לפני בניית אנדרואיד, עליך לזהות יעד לבנות. כדי לזהות את היעד לבנייה, השתמש בפקודת lunch ולאחריה יעד שמזהה את מוצר היעד והבנייה שלך:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

הצג את היעד הנוכחי

כדי לראות את הגדרות ארוחת הצהריים הנוכחיות, הפעל:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

למחרוזת המייצגת את היעד יש את הפורמט הבא:

lunch product_name-release-build_variant

המרכיבים של מחרוזת זו הם:

  • product_name הוא השם של המוצר שברצונך לבנות, כגון aosp_cf_x86_64_phone או aosp_husky . product_name הספציפי שלך יכול לעקוב אחר הפורמט שלך, אבל הפורמט שבו משתמשת Google מכיל את הרכיבים הבאים:

    • aosp מתייחס לפלטפורמת הקוד הפתוח של אנדרואיד.
    • (אופציונלי) cf נכלל כאשר המטרה מיועדת להפעלה בתוך אמולטור הדיונון.
    • ארכיטקטורה וחומרה, כגון x86_64_phone או husky (Pixel 8 pro).
  • release מוגדרת ל- trunk-staging .

  • החלק build_variant של המחרוזת יכול להיות אחד משלושת הערכים בטבלה הבאה:

    build_variant תיאור
    user גרסת בנייה זו מספקת גישת אבטחה מוגבלת ומתאימה לייצור.
    userdebug גרסת בנייה זו עוזרת למפתחי המכשיר להבין את הביצועים והעוצמה של מהדורות בפיתוח. בעת פיתוח עם בניית userdebug , עקוב אחר ההנחיות עבור userdebug .
    eng לוריאנט בנייה זה יש זמן בנייה מהיר יותר והיא מתאימה ביותר לפיתוח יומיומי אם לא אכפת לך מביצועים וכוח.

בנה את הקוד

הפעל את הפקודה הבאה כדי לבנות את היעד שלך. בהתאם למפרט של תחנת העבודה שלך, הבנייה הראשונה עשויה להימשך פחות משעה ועד כמה שעות. בנייה שלאחר מכן לוקחת פחות זמן משמעותית.

$ 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
============================================

הפקודה m נבנית מראש העץ, כך שתוכל להפעיל m מתוך ספריות משנה. אם יש לך את משתנה הסביבה TOP , הפקודה m משתמשת בו. אם TOP לא מוגדר, הפקודה m מחפשת את העץ מהספרייה הנוכחית, מנסה למצוא את החלק העליון של העץ.

הפקודה m יכולה לטפל במשימות מקבילות עם ארגומנט -jN . אם אינך מספק ארגומנט -j , מערכת הבנייה בוחרת אוטומטית ספירת משימות מקבילה שלדעתה היא אופטימלית עבור המערכת שלך.

אתה יכול לבנות מודולים ספציפיים במקום תמונת המכשיר המלאה על ידי רישום שמות המודולים בשורת הפקודה m שלך. בנוסף, הפקודה m מספקת כמה מטרות פסאודו, הנקראות מטרות . לדוגמה, m nothing לא בונה כלום, אלא מנתח ומאמת את מבנה הבנייה. לקבלת רשימה של יעדים חוקיים, הקלד 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 הבעייתי.