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

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

הגדרת הסביבה

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

source build/envsetup.sh

אוֹ

. build/envsetup.sh

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

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

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

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

hmm

בחירת מטרה

ארוחת צהריים

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

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

lunch aosp_arm-eng

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

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

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

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

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

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

טאפאס

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

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

בניית הקוד

חלק זה הוא סיכום מהיר כדי לוודא שההגדרה הושלמה.

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

m

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

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

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

הפעלת המבנה

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

מהבהב עם מגף מהיר

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

חיקוי של מכשיר אנדרואיד

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

emulator

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

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

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

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

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

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

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

גרסת ג'אווה לא נכונה

אם אתה מנסה לבנות גרסה של אנדרואיד זה עולה בקנה אחד עם הגרסה שלך של 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

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

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