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