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

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

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

אז שבו בשקט, תבעו מסוף ובואו נעשה היסטוריה.

מטרות

המשימה של codelab זה היא כפולה:

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

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

רשימת דרישות codelab זו נגזרת אלה עבור פלטפורמה כללית ( AOSP פיתוח). כדי לקחת codelab זה, הגדר את הדברים הבאים:

סביבה

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

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

  1. התקן את החבילות הדרושות על תחנת העבודה שלך.
  2. בעוד עדיין בתוך הטרמינל, להתקין ריפו ולהשיג אישורים לכל מאגרי 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 -j8
    

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

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

בנה את הקוד

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

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

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

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

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

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

    m
    

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

צור מופע של Acloud

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

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

  1. צור מופע מקומי של Acloud באמצעות:

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

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

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

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

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

adb logcat

עשה שינוי

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

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

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

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

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. מצא את שתי השורות הבאות:

    postFrame();
    postComposition();
    
  5. החלף את שתי השורות הבאות:

    postFrame();
    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();
    
  6. בנה את הקוד:

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. אם תתבקש לבחור מכשיר, בחר את המכשיר המציג את הזמן הקצר ביותר שחלף. (זהו כנראה אחד האחרון ברשימה שאתה רואה.) כדי לראות את כול מופעי ההתקן הווירטואליים, להשתמש acloud list ו acloud list -v פקוד.

ודא שאתה רואה שינוי צבע במכשיר שבחרת בדומה למה שמוצג באיור 1.

Example of a successful color change

המראה איור 1. מסך לאחר שינוי צבע מוצלח

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

חלק זה של codelab משתמש בבדיקה לדוגמה שנמצאת בעץ המקור ונכשלת. זו מעסיקה 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 ו ריפו, עם קישורים תיעוד מלא על עבודה עם קוד המקור אנדרואיד. עיין מאגר AOSP עבור הרשימה המלאה של פרויקטים Git ואת פרוייקטים אישיים (נתיבים) עבור סניפים הקשורים לכל פרויקט.

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

  1. בהנחה שביצעת את השינויים 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

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

חזור על השינוי שלך

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

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

ואז לנטוש את הסניף הזמני הקשורים ב 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 .

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

תקבל עזרה

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