Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

מפתח קוד אנדרואיד

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

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

אז נשען, הפעל מסוף, ובוא נעשה היסטוריה.

מטרות

המשימה של קוד קוד זה היא כפולה:

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

תנאים מוקדמים

להלן רשימת הדרישות המלאה עבור קוד קוד זה, שמקורן בדרישות לפיתוח פלטפורמות כלליות ( AOSP ).

כדי לקחת את קוד הקוד הזה, יהיה עליכם להגדיר:

סביבה

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

הגדר תחנת עבודה

  1. התקן את החבילות הדרושות בתחנת העבודה.
  2. בזמן שאתה עדיין נמצא במסוף, התקן את Repo וקבל אישורים לכל מאגרי Git.

אתחל וסנכרן את הקוד

  1. נווט לספריית הבית שלך:

    cd ~
    
  2. צור בתוכה ספריית משנה מקומית עובדת:

    mkdir aosp
    
  3. נווט לספרייה:

    cd aosp
    
  4. אתחל את ענף המאסטר של קוד המקור של מאגר AOSP (ברירת המחדל):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. הזן או קבל את אישורי ה- Git שלך (שם, כתובת דוא"ל).

  6. סנכרן את קוד המקור:

    repo sync -j16
    

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

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

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

rm -rf aosp2

בנה את הקוד

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

יעד המכשיר הכלול להלן, aosp_cf_x86_64_phone-userdebug , מאפשר לך לבנות את מכשיר האנדרואיד הווירטואלי של דיונון לבדיקה ללא מכשיר פיזי.

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

  1. הגדר את הסביבה שלך לבניית מכשירי Android על ידי הפעלת הפקודה הבאה משורש קופת קוד המקור שלך:

    source build/envsetup.sh
    
  2. העבירו את יעד הבנייה לפקודת ארוחת הצהריים, כך:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. בנה את הקוד מכל מקום בקופה שלך באמצעות:

    m
    

צפה שהבנייה הראשונה תארך שעות. לבנות עוקבות לוקח פחות זמן משמעותי.

צור מופע Acloud

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

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

  1. צור מופע מקומי Acloud עם:

    acloud create --local-image --local-instance
    
  2. קבל עדכונים לחבילות הנדרשות.

  3. אם תתבקש, הפעל מחדש את תחנת העבודה שלך כדי שהשינויים ייכנסו לתוקף.

  4. בחר את מכשיר הדיונון.

יש לברך אותך עם הפעלת VNC המכילה מכשיר אנדרואיד!

אתה יכול לתקשר עם המכשיר הווירטואלי בתחנת העבודה שלך באמצעות העכבר והמקלדת. תוכל גם לעקוב אחר הפעילות ביומנים בזמן שאתה משתמש במכשיר שלך באמצעות הפקודה logcat של Android Debug Bridge (adb):

adb logcat

עשה שינוי

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

  1. משורש הקופה שלך ( aosp/ directory), נווט אל frameworks/native פרויקט Git frameworks/native :

    cd frameworks/native
    
  2. התחל פרויקט זמני עם:

    repo start <some-name> .
    
  3. ערוך את SurfaceFlinger.cpp כדי לכלול את העדכונים מרשימת השינויים במיקום הבא:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. בנה את הקוד:

    m
    
  5. עדכן את המבנה על המכשיר:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

אתה אמור לראות שינוי צבע במכשיר.

בדוק את הקוד שלך

במהלך חלק זה של קוד הקוד נעבור דרך בדיקת דוגמה שנמצאת בעץ המקור וכבר נכשלה. על מנת להריץ את הבדיקה באופן מקומי נשתמש ב- Atest לבדיקת הקוד.

כדי להשתמש במבחן:

  1. לָרוּץ:

    atest DevCodelabTest
    
  2. המבחן ייכשל; עכשיו בואו נתקן את זה! מצא את קוד המקור של הבדיקה הכושלת:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. ואז הסתכל פנימה:

    platform_testing/tests/example/devcodelab
    
  4. כדי לערוך את הקובץ, קח את שם הבדיקה והחלף את ה- . עם / , כמו כן:

    android.test.example.devcodelab.DevCodelabTest
    

    הופך להיות:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. כך ערוך:

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    להחליף:

    Assert.assertTrue(false)
    

    עם:

    Assert.assertTrue(true)
    
  6. הפעל את הבדיקה שוב כדי לוודא שתיקנת את הבדיקה:

    atest DevCodelabTest
    

העלה את הקוד שלך לבדיקה

ריפו מפשט את השימוש ב- Git על ידי איגוד פקודות כגון git clone לעבודה במאגרים (או פרויקטים) רבים של Git בבת אחת.

ראה כלים לבקרת מקור לקבלת סקירות על Git ו- Repo עם קישורים לתיעוד מלא בעבודה עם קוד המקור של Android. עיין במאגר AOSP עבור הרשימה המלאה של פרויקטים של Git והפרויקטים (הנתיבים) האישיים עבור סניפים המשויכים לכל פרויקט.

אתה תשתמש במערכת סקירת קוד מבוססת אינטרנט של Gerrit לפרויקטים ב- Git.

  1. בהנחה שביצעת את השינויים שלך frameworks/native בפרויקט frameworks/native , הפעל את הפקודות הבאות כדי להעלות אותן:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. להודעת ההתחייבות שלך הזן:

    Android codelab change
    Test: manual atest
    
  3. העלה את השינוי שלך:

    repo upload
    

אם תצליח, תראה הודעה הדומה:

Upload project frameworks/native/ to remote branch master:
  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/master

צפה בשינוי שלך בחריט

עבור לקישור המודפס במסוף הדומה:

https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432

זה משלים את קוד הקוד המתחיל לפיתוח פלטפורמת אנדרואיד. ראה הגשת תיקונים לשלבים הבאים ולשאר אתר זה לקבלת פרטים מלאים על פיתוח אנדרואיד.

החזר את השינוי שלך

בדרך כלל, לאחר בדיקה ובדיקה / אישור, היית מגיש את השינוי שלך בחריט וממזג אותו למאגר.

במקום זאת, למטרות קוד הקוד, חזור על רשימת השינויים על ידי לחיצה על נטוש בחריט.

ואז נטוש את הענף הזמני המשויך בספריית המסגרות / פרוייקטים מקוריים (או המשנה שלו):

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 .

בשלב זה סיימת! עבודה נחמדה!

תקבל עזרה

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