עץ המקור של אנדרואיד ממוקם במאגר Git שמתארח על ידי Google. מאגר Git כולל מטא נתונים עבור מקור האנדרואיד, כולל שינויים במקור ומתי בוצעו השינויים. דף זה מתאר כיצד להוריד את עץ המקור עבור שורת קוד ספציפית של אנדרואיד.
כדי להתחיל עם תמונת יצרן עבור מכשיר ספציפי במקום להוריד את המקור, ראה בחירת מבנה מכשיר .
אתחול לקוח Repo
לאחר התקנת ה-Repo Launcher , הגדר את הלקוח שלך לגישה למאגר המקור של אנדרואיד:
צור ספרייה ריקה כדי להחזיק את קבצי העבודה שלך. תן לזה איזה שם שתרצה:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
הגדר את Git עם השם האמיתי וכתובת הדוא"ל שלך. כדי להשתמש בכלי בדיקת הקוד של Gerrit, אתה צריך כתובת דוא"ל שמחוברת לחשבון Google רשום . ודא שזו כתובת חיה שבה אתה יכול לקבל הודעות. השם שאתה מספק כאן מופיע בייחוס עבור הגשת הקוד שלך.
git config --global user.name Your Name
git config --global user.email you@example.com
הפעל את
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