הקמת סביבת בנייה

סעיף זה מתאר כיצד להגדיר את סביבת העבודה המקומית שלך כדי לבנות את קבצי המקור של Android. עליך להשתמש בלינוקס; בנייה תחת MacOS או Windows אינה נתמכת. זכור את השינוי החשוב גם לקובץ הבינארי /usr/bin/python .

לסקירה כללית של כל תהליך סקירת הקוד ועדכון הקוד, ראה Life of a Patch .

בחירת סניף

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

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

הגדרת סביבת בנייה של לינוקס

הוראות אלה חלות על כל הסניפים, כולל master .

מבנה האנדרואיד נבדק באופן שגרתי בבית בבדיקות אובונטו LTS (14.04) ובבדיקות דביאן. רוב ההפצות האחרות צריכות להיות זמינות בכלי הבנייה הנדרשים.

עבור Gingerbread (2.3.x) ומעלה, כולל ענף master , נדרשת סביבת 64 סיביות. ניתן להרכיב גרסאות ישנות יותר במערכות 32 סיביות.

התקנת חבילות נדרשות (Ubuntu 18.04)

אתה צריך גרסת 64 סיביות של אובונטו.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

התקנת חבילות נדרשות (Ubuntu 14.04)

אתה צריך גרסת 64 סיביות של אובונטו (מומלץ 14.04).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

התקנת חבילות נדרשות (Ubuntu 12.04)

אתה יכול להשתמש באובונטו 12.04 כדי לבנות גרסאות ישנות יותר של אנדרואיד. גרסה 12.04 אינה נתמכת במהדורות master או מהדורות אחרונות.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

התקנת חבילות נדרשות (Ubuntu 10.04-11.10)

בנייה על אובונטו 10.04-11.10 אינה נתמכת עוד, אך עשויה להיות שימושית לבניית מהדורות ישנות יותר של AOSP.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

על אובונטו 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

על אובונטו 11.10:

sudo apt-get install libx11-dev:i386

הגדרת גישת USB

התקן ערכת ברירת מחדל של קהילה של כללי udev עבור כל מכשירי האנדרואיד על ידי ביצוע ההוראות להגדרת מכשיר לפיתוח .

שימוש בספריית פלט נפרדת

כברירת מחדל, הפלט של כל build מאוחסן בספריית המשנה out/ של עץ המקור התואם. אתה יכול לעקוף זאת על ידי ייצוא משתנה הסביבה OUT_DIR . לדוגמה:

export OUT_DIR=out_mytarget

זה יגרום לפלט של ה-build להיות מאוחסן בספריית המשנה out_mytarget/ של עץ המקור. כאשר משתמשים באותו עץ מקור לבנייה עבור מטרות מרובות, מומלץ להשתמש ב- OUT_DIR נפרד עבור כל יעד.

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

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

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

ספריית הפלט של כל עץ מקור נפרד נקראת על שם הספרייה שמחזיקה את עץ המקור. לדוגמה, אם יש לך עצי /source/master1 source/master1 ו- /source/master2 ואם OUT_DIR_COMMON_BASE מוגדר ל- /output , ספריות הפלט הן /output/master1 ו- /output/master2 .

הימנע מאחסנת עצי מקור מרובים בספריות שיש להן אותו שם, שכן עצי המקור ישתפו בסופו של דבר ספריית פלט, עם תוצאות בלתי צפויות. זה נתמך רק על Jelly Bean (4.1) ומעלה, כולל ענף master .

הבא: הורד את המקור

סביבת הבנייה שלך טובה! המשך להורדת המקור .