בניית אנדרואיד

בצע את ההוראות הבאות כדי להתחיל לבנות אנדרואיד.

הקמת הסביבה

אתחל את הסביבה עם הסקריפט envsetup.sh :

source build/envsetup.sh

אוֹ

. build/envsetup.sh

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

עליך להנפיק מחדש את הפקודה הזו לאחר כל repo sync כדי לקלוט שינויים כלשהם בסקריפט הזה. שים לב שהחלפת source ב . (נקודה בודדת) שומרת כמה תווים, והצורה הקצרה משמשת יותר בתיעוד.

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

כדי לראות את הרשימה המלאה של הפקודות הזמינות, הפעל:

hmm

בחירת יעד

ארוחת צהריים

בחר איזה יעד לבנות עם lunch . lunch product_name - build_variant בוחר את product_name כמוצר לבנייה, ואת build_variant כגרסה לבנייה, ומאחסן את הבחירות הללו בסביבה לקריאה על ידי הפעלות עוקבות של m ופקודות דומות אחרות.

ניתן להעביר את התצורה המדויקת כארגומנט. לדוגמה, הפקודה הבאה מתייחסת ל-build שלם עבור האמולטור, כאשר כל ניפוי הבאגים מופעל:

lunch aosp_arm-eng

אם פועל ללא טיעונים, lunch מבקשת ממך לבחור יעד מהתפריט, אך שימו לב שהתפריט אינו כולל כל אפשרות. ראה בחירת מבנה מכשיר עבור תצורות ה-build של כל המכשירים הנתמכים ב-AOSP, או דבר עם אנשים בצוות שלך לגבי ארוחת הצהריים הנכונה עבור המכשיר שאתה עובד עליו.

כל יעדי הבנייה מקבלים את הצורה BUILD-BUILDTYPE , כאשר BUILD הוא שם קוד המתייחס לשילוב התכונות המסוים. BUILDTYPE הוא אחד מהבאים.

סוג בנייה להשתמש
מִשׁתַמֵשׁ גישה מוגבלת; מתאים לייצור
userdebug כמו משתמש אבל עם גישה לשורש ויכולת ניפוי באגים; מועדף עבור איתור באגים
eng תצורת פיתוח עם כלי ניפוי באגים נוספים

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

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

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

echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

למידע נוסף על בנייה והפעלה על חומרה בפועל, ראה התקנים מהבהבים .

טאפאס

פקודת tapas מגדירה את המבנה של יישומים מפורקים. הוא בוחר אפליקציות בודדות שייבנו על ידי מערכת הבנייה של אנדרואיד. שלא כמו lunch , tapas אינו מבקש בניית תמונות עבור מכשיר.

הפעל tapas help לקבלת מידע נוסף על הפקודה.

בניית הקוד

סעיף זה הוא סיכום מהיר כדי להבטיח שההגדרה הושלמה.

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

m

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

  • droid - m droid הוא המבנה הרגיל. היעד הזה נמצא כאן מכיוון שמיעד ברירת המחדל דורש שם.
  • all - m all בונה את כל מה ש- m droid עושה, בנוסף לכל מה שאין לו את תג droid . שרת ה-build מפעיל את זה כדי לוודא שכל מה שנמצא בעץ ויש לו קובץ Android.mk נבנה.
  • m - פועל בונה מראש העץ. זה שימושי מכיוון שאתה יכול להפעיל את make מתוך ספריות משנה. אם יש לך את משתנה הסביבה TOP , הוא משתמש בזה. אם לא, הוא מחפש את העץ מהספרייה הנוכחית, מנסה למצוא את החלק העליון של העץ. אתה יכול לבנות את כל עץ קוד המקור על ידי הפעלת m ללא ארגומנטים או לבנות יעדים ספציפיים על ידי ציון שמותיהם.
  • mma - בונה את כל המודולים בספרייה הנוכחית, והתלות שלהם.
  • mmma - בונה את כל המודולים בספריות שסופקו, והתלות שלהם.
  • croot - cd לראש העץ.
  • clean - m clean מוחק את כל הפלט וקבצי הביניים עבור תצורה זו. זה זהה ל- rm -rf out/ .

הפעל m help כדי לראות אילו יעדים m אחרים מספקים.

הפעלת הבנייה

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

מהבהב עם Fastboot

כדי להבזק מכשיר, השתמש fastboot , שאמור להיכלל בנתיב שלך לאחר בנייה מוצלחת. ראה הבהוב התקן לקבלת הוראות.

הדמיית מכשיר אנדרואיד

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

emulator

הבנת בניית טביעות אצבע

כדי לעקוב ולדווח על בעיות הקשורות למבנה אנדרואיד מסוים, חשוב להבין את טביעת האצבע של המבנה. טביעת האצבע של ה-build היא מחרוזת ייחודית הניתנת לקריאה על ידי אדם המכילה מידע יצרן שהופק לכל מבנה. עיין בתיאור FINGERPRINT בסעיף פרמטרי בנייה במסמך הגדרת תאימות אנדרואיד (CDD) לקבלת התחביר המדויק.

טביעת האצבע של הבנייה מייצגת יישום וגרסה מסוימת של אנדרואיד. מפתח ייחודי זה מאפשר למפתחי אפליקציות ואחרים לדווח על בעיות עם גרסאות קושחה ספציפיות. ראה דיווח על באגים עבור תהליך דיווח הבעיות ב-Android.

טביעת אצבע בנוי מקפלת את כל פרטי היישום של אנדרואיד:

  • ממשקי API: אנדרואיד ומקוריים, כמו גם התנהגויות API רכות
  • Core API והתנהגות מסוימת של ממשק המשתמש של המערכת
  • דרישות תאימות ואבטחה המוגדרות ב-CDD
  • מפרטי המוצר והגדרת תכונת השימוש המופעלת על ידי אפליקציות למיקוד מכשירים העומדים בדרישות הצפויות
  • הטמעות של רכיבי חומרה ותוכנה

עיין ב- CDD לפרטים מלאים והוספת מכשיר חדש להנחיות ליצירת מכשיר אנדרואיד חדש לגמרי.

פתרון שגיאות בנייה נפוצות

גרסת Java שגויה

אם אתה מנסה לבנות גרסה של אנדרואיד שאינה עולה בקנה אחד עם גרסת Java שלך, make ביטול באמצעות הודעה כגון:

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

אין הרשאת USB

כברירת מחדל ברוב מערכות לינוקס, משתמשים חסרי הרשאות אינם יכולים לגשת ליציאות USB. אם אתה רואה שגיאת הרשאה נדחתה, עקוב אחר ההוראות בהגדרת גישת USB .

אם ADB כבר פעל ולא יכול להתחבר למכשיר לאחר הגדרת הכללים האלה, אתה יכול להרוג אותו עם adb kill-server . פקודה זו גורמת ל-ADB להפעיל מחדש את התצורה החדשה.