הורדת המקור

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

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

אתחול לקוח Repo

לאחר התקנת ה-Repo Launcher , הגדר את הלקוח שלך לגישה למאגר המקור של אנדרואיד:

  1. צור ספרייה ריקה כדי להחזיק את קבצי העבודה שלך. תן לזה איזה שם שתרצה:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. הגדר את Git עם השם האמיתי וכתובת האימייל שלך. כדי להשתמש בכלי סקירת הקוד של Gerrit, אתה צריך כתובת דוא"ל שמחוברת לחשבון Google רשום . ודא שזו כתובת חיה שבה אתה יכול לקבל הודעות. השם שאתה מספק כאן מופיע בייחוס עבור הגשת הקוד שלך.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. הפעל את repo init כדי לקבל את הגרסה האחרונה של Repo עם תיקוני הבאגים האחרונים שלה. עליך לציין כתובת URL עבור המניפסט, המציינת היכן ממוקמים המאגרים השונים הכלולים במקור האנדרואיד בתוך ספריית העבודה שלך.

    repo init -u https://android.googlesource.com/platform/manifest
    

    כדי לבדוק את סניף המאסטר:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

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

    עבור Python 2

    עבור Python 3

    אם אתה מקבל הודעת שגיאה " /usr/bin/env 'python' no such file or directory ", השתמש באחד מהפתרונות הבאים:

    אם אובונטו 20.04.2 LTS שלך היא גרסת לינוקס מותקנת לאחרונה (לעומת משודרגת):

    sudo ln -s /usr/bin/python3 /usr/bin/python

    אם אתה משתמש בגירסת Git 2.19 ומעלה, אתה יכול לציין --partial-clone בעת ביצוע repo init . זה עושה שימוש ביכולת השיבוט החלקי של Git כדי להוריד רק אובייקטים של Git בעת הצורך, במקום להוריד הכל. מכיוון ששימוש בשיבוט חלקי פירושו שפעולות רבות חייבות לתקשר עם השרת, השתמש בדברים הבאים אם אתה מפתח ואתה משתמש ברשת עם חביון נמוך:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    עבור מערכת ההפעלה Windows בלבד: אם אתה מקבל הודעת שגיאה המציינת שלא ניתן ליצור קישורים סמליים, מה שגורם ל- repo init להיכשל, עיין בתיעוד GitHub Symbolic Links כדי ליצור אותם, או כדי לאפשר את התמיכה שלהם. עבור אנשים שאינם מנהלי מערכת, עיין בסעיף מתן אפשרות לגורמים שאינם מנהלי מערכת ליצור קישורים סמליים .

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

הורדת עץ המקור של אנדרואיד

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

repo sync

כדי להאיץ את הסנכרון, העבר את הדגלים -c (ענף נוכחי) ו- -j threadcount :

repo sync -c -j8

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

כדי לדכא פלט, העבר את הדגל -q (שקט). עיין ב- Repo Command Reference עבור כל האפשרויות.

שימוש באימות

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

בעת שיתוף כתובת IP עם משתמשים אחרים (לדוגמה, בעת גישה למאגרי המקור מעבר לחומת אש של NAT), המכסות יכולות להפעיל אפילו עבור דפוסי שימוש רגילים (לדוגמה, אם משתמשים רבים מסנכרנים לקוחות חדשים מאותה כתובת IP בתוך תקופה קצרה).

במקרה זה, אתה יכול להשתמש בגישה מאומתת, אשר לאחר מכן משתמשת במכסה נפרדת עבור כל משתמש, ללא קשר לכתובת ה-IP.

ראשית, צור סיסמה עם מחולל הסיסמאות ובצע את ההוראות בדף מחולל הסיסמאות.

לאחר מכן, כפה גישה מאומתת באמצעות URI המניפסט https://android.googlesource.com/a/platform/manifest . שימו לב כיצד קידומת הספרייה /a/ מפעילה אימות חובה. אתה יכול להמיר לקוח קיים לשימוש באימות חובה עם הפקודה הבאה:

repo init -u https://android.googlesource.com/a/platform/manifest

פתרון בעיות רשת

בעת הורדה מאחור של פרוקסי (שנפוץ בסביבות ארגוניות מסוימות), ייתכן שיהיה עליך לציין במפורש את ה-proxy עבור Repo לשימוש:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

לעתים רחוקות יותר, לקוחות לינוקס חווים בעיות קישוריות, נתקעים באמצע הורדות (בדרך כלל במהלך קבלת אובייקטים ). התאמת ההגדרות של מחסנית TCP/IP ושימוש בפקודות לא מקבילות יכולים לשפר את המצב. עליך להיות בעל גישת שורש כדי לשנות את הגדרת ה-TCP:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

שימוש במראה מקומית

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

הוראות אלו מניחות שהמראה נוצרה ב- /usr/local/aosp/mirror . ראשית, צור וסנכרן את המראה עצמה. שימו לב לדגל --mirror , אותו תוכלו לציין רק בעת יצירת לקוח חדש:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

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

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

לבסוף, כדי לסנכרן לקוח מול השרת, סנכרן את המראה מול השרת, ואז את הלקוח מול המראה:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

אפשר לאחסן את המראה בשרת LAN ולגשת אליו דרך NFS, SSH או Git. אפשר גם לאחסן אותו בכונן נשלף ולהעביר את הכונן הזה בין משתמשים או מכונות.

אימות תגי Git

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

gpg --import

העתק והדבק את המפתח למטה, ולאחר מכן הקלד EOF ( Ctrl-D ) כדי לסיים את הקלט ולעבד את המקשים.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

לאחר ייבוא ​​המפתחות, תוכל לאמת כל תג באמצעות:

git tag -v TAG_NAME

השג קבצים בינאריים קנייניים

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

הורד קבצים בינאריים קנייניים

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

חלץ קבצים בינאריים קנייניים

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

לנקות

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

make clobber