גוגל מחויבת לקדם הון גזעי עבור קהילות שחורות. תראה איך.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

הגדרת סביבה

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

source build/envsetup.sh

אוֹ

. build/envsetup.sh

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

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

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

  • lunch - lunch product_name - build_variant בוחר product_name כמוצר לבנות, build_variant כמו וריאנט כדי לבנות, וחנויות בחירות אלה בסביבה להיקרא על ידי תפילות הבאות של m ופקודות דומות אחרות.
  • m - רצים בונים מראש העץ. זה שימושי כי אתה יכול לרוץ make מתוך תיקיות משנה. אם יש לך את משתנה הסביבה TOP , הוא משתמש בזה. אם לא, זה מסתכל על העץ מהספרייה הנוכחית, מנסה למצוא את החלק העליון של העץ. אתה יכול לבנות את עץ קוד המקור כולו על ידי הפעלת m ללא ארגומנטים או לבנות יעדים ספציפיים על ידי ציון שמם.
  • mma - בונה את כל המודולים בספריה הנוכחית ואת התלות שלהם.
  • mmma - בונה את כל המודולים בספריות שסופקו ואת התלות שלהם.
  • croot - cd לראש העץ.

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

hmm

בחר יעד

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

lunch aosp_arm-eng

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

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

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

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

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

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

בניית הקוד

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

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

m

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

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

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

תריץ את זה!

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

מהבהב עם fastboot

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

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

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

emulator

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

גרסת 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 הבעייתי.

גרסת פייתון 3

Repo בנוי על פונקציונליות מסוימת מ- Python 2.x והיא אינה תואמת את Python 3. כדי להשתמש ב- Repo, התקן את Python 2.x:

apt-get install python

מערכת קבצים חסרי רגישות

אם אתה בונה על מערכת קבצים HFS ב- macOS, אתה עלול להיתקל בשגיאה כגון:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

עקוב אחר ההוראות ביצירת תמונת דיסק רגישת רישיות .

אין הרשאת USB

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

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