אתה יכול לעזור בפיתוח מערכת ההפעלה המותקנת ביותר בהיסטוריה של כדור הארץ. כן, אתה כאן כדי לצאת למסע להיות מהנדס פלטפורמת אנדרואיד.
למרות שהדרך מאתגרת, צוות אנדרואיד שואף לפשט את המסע שלך, בכל מהדורה. והצוות מבצע שיפורים מדי יום באמצעות עבודה ישירה בפרויקט הקוד הפתוח של אנדרואיד (AOSP).
אז שבו, הפעילו מסוף, ובואו נעשה היסטוריה.
מטרות
המשימה של מעבדת קוד זה כפולה:
- לתת לכם טעימה קטנה מאיך זרימת העבודה של המפתחים עבור מהנדסי אנדרואיד העובדים על הפלטפורמה (מערכת ההפעלה).
- עודד אותך לספק משוב על הכלים, התיעוד וזרימת העבודה של המפתחים של אנדרואיד.
דרישות מוקדמות
רשימת הדרישות עבור מעבדת קוד זה נגזרת מאלה לפיתוח פלטפורמה כללית ( AOSP ). כדי לקחת מעבדת קוד זה, הגדר את הדברים הבאים:
- תחנת עבודה פיזית של לינוקס העומדת בכל הדרישות הציבוריות .
- Repo ותצורת Git הדרושה כדי לערוך את בסיס הקוד של אנדרואיד.
סביבה
בדרך כלל, משתמשים בונים ומפתחים ישירות בתחנת העבודה. מכיוון שייתכן שאתה עובד במסופים שונים, ורבות מהפקודות בהן נעשה שימוש הן ספציפיות למסוף, תצטרך להפעיל אותן מחדש בכל הפעלת מסוף. באופן ספציפי, אלה כוללים את source build/envsetup.sh
ואת פקודות lunch
.
הגדר תחנת עבודה
- התקן את החבילות הדרושות בתחנת העבודה שלך.
- בזמן שאתה עדיין במסוף, התקן את Repo והשיג אישורים לכל מאגרי Git.
אתחול וסנכרן את הקוד
נווט אל ספריית הבית שלך:
cd ~
צור בתוכו תת-ספריית עבודה מקומית:
mkdir aosp
נווט לתוך הספרייה:
cd aosp
אתחל את הענף הראשי של קוד המקור של מאגר AOSP (ברירת המחדל):
repo init -u https://android.googlesource.com/platform/manifest
הזן או קבל את אישורי Git שלך (שם, כתובת אימייל).
סנכרן את קוד המקור:
repo sync -j8
סנכרון ראשוני יכול להימשך שעה או יותר.
כל קופה של ריפו מיוצגת על ידי קובץ מניפסט . מותר להחזיק יותר מ-repo checkout אחד בכל פעם, כל עוד הם קיימים בספריות נפרדות. אבל שים לב שכל קופה ובנייה מסתכמת בשימוש של בערך 300 GB (וגדל), אז או שתגביל את עצמך ל-2 קופות ריפו, או הגדל את המערכת שלך עם כונן משני.
בנה את הקוד
כדי לבנות אנדרואיד, עליך לבחור סוג מכשיר יעד לבנות עם פקודת lunch
. יעד הוא תמורה של מכשיר, כגון דגם ספציפי או גורם צורה.
יעד המכשיר aosp_cf_x86_64_phone-userdebug
מאפשר לך לבנות את מכשיר האנדרואיד הווירטואלי Cuttlefish לבדיקה ללא מכשיר פיזי.
כדי לבנות ולעדכן מכשיר פיזי במקום זאת, בחר יעד אחר ופעל לפי ההוראות למכשירים מהבהבים .
הגדר את הסביבה שלך לבניית מכשירי אנדרואיד על ידי הפעלת הפקודה הבאה מהשורש של תשלום קוד המקור שלך:
source build/envsetup.sh
העבר את יעד הבנייה לפקודת ארוחת הצהריים, כך:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
בנה את הקוד מכל מקום בקופה שלך עם:
m
צפו שהבנייה הראשונה תארך שעות. בנייה שלאחר מכן לוקחת פחות זמן משמעותית.
הפעל את דיונון
Cuttlefish הוא אמולטור אנדרואיד המשמש לבדיקת המבנה שלך.
אם מעולם לא התקנת את Cuttlefish, עליך להתקין את התלות הדרושים של Cuttlefish. בחלון מסוף, הפעל את הפקודות הבאות כדי להוריד, לבנות ולהתקין את חבילות Debian המארח:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
האתחול מחדש מפעיל התקנת מודולי קרנל נוספים ומחיל חוקי
udev
.השקת דיונון:
launch_cvd --daemon</code>
התחבר למכשיר Cuttlefish על ידי ניווט אל
https://localhost:8443
בדפדפן האינטרנט שלך. אתה מתקבל עם זרם וידאו של המכשיר מופעל אנדרואיד שבנית זה עתה.
עשה שינוי
עדכן את קוד המקור בעקבות רשימת שינויים לדוגמה זו.
מהשורש של התשלום שלך (
aosp/
directory), נווט אל ה-frameworks/native
Project Git:cd frameworks/native
התחל פרויקט זמני עם הפקודה הזו:
repo start <some-name> .
ערוך
SurfaceFlinger.cpp
כדי לכלול את העדכונים מרשימת השינויים במיקום הבא:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
מצא את השורה הזו:
postComposition();
החלף את שתי השורות האלה בשורות הבאות:
postComposition(); mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f}); updateColorMatrixLocked();
בנה את הקוד:
m
עדכן את ה-build במכשיר:
adb root
adb remount
adb sync
adb reboot
ודא שאתה רואה שינוי צבע במכשיר שבחרת בדומה למה שמוצג באיור 1.
איור 1. מראה מסך לאחר שינוי צבע מוצלח
בדוק את הקוד שלך
חלק זה של מעבדת הקוד משתמש במבחן לדוגמה שנמצא בעץ המקור ונכשל. זה משתמש ב- Atest להפעלת הבדיקה מקומית ובדיקת הקוד.
כדי להשתמש בבדיקה, בצע את ההוראות הבאות:
לָרוּץ:
atest DevCodelabTest
המבחן ייכשל. כדי לתקן את זה, מצא את קוד המקור של הבדיקה הכושלת:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
אז תסתכל כאן
platform_testing/tests/example/devcodelab
כדי לגרום לקובץ לערוך, קח את שם הבדיקה ב-
android.test.example.devcodelab.DevCodelabTest
והחלף את ה-.
עם/
, כדי לקבל תוצאה זו:src/android/test/example/devcodelab/DevCodelabTest.java
לאחר מכן ערוך
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
להחליף
Assert.assertTrue(false)
עם
Assert.assertTrue(true)
הרץ את הבדיקה שוב כדי לוודא שתיקנת את הבעיה:
atest DevCodelabTest
העלה את הקוד שלך לבדיקה
Repo מפשט את השימוש ב-Git על ידי צירוף פקודות כגון git clone
לעבודה על פני מספר מאגרי Git (או פרויקטים) בו-זמנית.
ראה כלי בקרת מקור לסקירות כלליות של Git ו-Repo, עם קישורים לתיעוד מלא על עבודה עם קוד מקור אנדרואיד. עיין במאגר AOSP לרשימה המלאה של פרויקטי Git והפרויקטים (נתיבים) בודדים עבור סניפים הקשורים לכל פרויקט.
עבור סקירת קוד של הפרויקטים שלך ב-Git, תשתמש במערכת סקירת קוד מבוססת אינטרנט של Gerrit .
בהנחה שביצעת את השינויים שלך
frameworks/native
, הפעל את הפקודות הבאות כדי להעלות אותן:cd frameworks/native
repo start codelab .
git add .
git commit
להודעת ההתחייבות שלך, הזן את הפרטים הבאים:
Android codelab change Test: manual atest
העלה את השינוי שלך:
repo upload
אם תצליח, תראה הודעה הדומה להודעה זו:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
ראה את השינוי שלך ב-Gerrit
עבור לקישור, המודפס בטרמינל, הדומה לקישור הזה:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
זה משלים את מעבד הקוד המתחיל לפיתוח פלטפורמת אנדרואיד. ראה הגשת תיקונים לשלבים הבאים, ולפרטים מלאים על פיתוח אנדרואיד, עיין בשאר האתר הזה.
החזר את השינוי שלך
בדרך כלל, לאחר בדיקה ולאחר סקירה ואישור, אתה מגיש את השינוי שלך ב-Gerrit וממזג אותו לתוך המאגר.
במקום זאת, למטרות מעבדת קוד זה, החזר את רשימת השינויים שלך על ידי לחיצה על עזוב ב-Gerrit.
לאחר מכן נטוש את הסניף הזמני המשויך בספריית frameworks/native
(או ספריות המשנה שלו):
repo abandon codelab .
זכור גם לבטל את השינויים שביצעת בקובץ הבדיקה. מכיוון שלא התחלת repo start
, git commit
ו- repo upload
את השינוי, אתה יכול לאפס את הקובץ עצמו. בהנחה שאתה נמצא בספריית aosp/platform_testing directory
, השתמש בדברים הבאים כדי לאפס את הקובץ:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
בשלב זה, סיימת! עבודה נחמדה!
תקבל עזרה
אם אתה נתקל בשגיאות במהלך מעבדת קוד זה, דווח עליהן באמצעות הקישור 'מעקב אחר בעיות' בתחתית כל עמוד. שלח שאלות לקבוצת בניית אנדרואיד .