مطور Android Codelab

يمكنك المساعدة في تطوير نظام التشغيل الأكثر تثبيتًا في تاريخ Earth. نعم ، أنت هنا لبدء رحلة أن تصبح مهندسًا لمنصة Android.

على الرغم من أن المسار يمثل تحديًا ، إلا أن فريق Android يسعى جاهدًا لتبسيط رحلتك ، كل إصدار. ويقوم الفريق بإجراء تحسينات كل يوم من خلال العمل المباشر في مشروع Android مفتوح المصدر (AOSP).

لذا اجلس واشعل المحطة ودعنا نصنع التاريخ.

الأهداف

مهمة مختبر الرموز هذا ذات شقين:

  1. لإعطائك لمحة بسيطة عن سير عمل المطور بالنسبة لمهندسي Android الذين يعملون على النظام الأساسي (نظام التشغيل).
  2. نشجعك على تقديم ردود الفعل حول أدوات الروبوت، والوثائق، وسير العمل المطور.

المتطلبات الأساسية

وتستمد قائمة متطلبات هذا codelab من تلك التي لمنصة العامة ( AOSP ) التنمية. للحصول على معمل الرموز هذا ، قم بإعداد ما يلي:

بيئة

عادةً ما يقوم المستخدمون بالبناء والتطوير على محطة العمل مباشرةً. نظرًا لأنك قد تعمل في محطات طرفية مختلفة ، ولأن العديد من الأوامر المستخدمة خاصة بالمحطة ، فستحتاج إلى إعادة تشغيلها في كل جلسة طرفية. على وجه التحديد، وتشمل هذه 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
    

يمكن أن تستغرق عمليات المزامنة الأولية ساعة أو أكثر. اطلع على تعليمات تحميل لمزيد من التفاصيل ذات الصلة أثناء انتظارك.

يتم تمثيل كل الخروج الريبو من قبل ملف البيان . يجوز أن يكون لديك أكثر من عملية سحب واحدة من الريبو في وقت واحد ، طالما أنها موجودة في دلائل مميزة. لكن لاحظ أن كل عملية دفع وبناء تبلغ ما يقرب من 300 غيغابايت من الاستخدام (وتتزايد) ، لذلك إما أن تقصر نفسك على 2 من عمليات إعادة الشراء ، أو زد نظامك بمحرك أقراص ثانوي.

بناء الكود

لبناء الروبوت، يجب تحديد الهدف نوع الجهاز لبناء مع 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 السيناريو ونفس lunch الأمر الذي المستخدمة هناك أولا. ثم

  1. قم بإنشاء مثيل محلي Acloud باستخدام:

    acloud create --local-image --local-instance
    
  2. قبول التحديثات على الحزم المطلوبة.

  3. إذا طُلب منك ذلك ، أعد تشغيل محطة العمل الخاصة بك حتى تصبح جميع التغييرات سارية المفعول.

  4. حدد جهاز الحبار.

يجب أن يتم الترحيب بك بجلسة VNC تحتوي على جهاز Android!

يمكنك التفاعل مع الجهاز الظاهري على محطة العمل الخاصة بك باستخدام الماوس ولوحة المفاتيح. يمكنك أيضا متابعة النشاط ضمن سجلات أثناء استخدام جهازك عن طريق استخدام الروبوت تصحيح بريدج (ADB) logcat الأوامر:

adb logcat

اصنع فرق

تحديث الكود التالي هذا المثال قائمة تغييرات .

  1. من جذر الخروج الخاص بك ( aosp/ دليل)، انتقل إلى frameworks/native مشروع بوابة:

    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 clone للعمل عبر العديد من مستودعات Git (أو مشاريع) في آن واحد.

انظر أدوات تحكم المصدر لمحات عامة عن بوابة والريبو، مع وصلات إلى وثائق كاملة على العمل مع شفرة المصدر الروبوت. رؤية مستودع AOSP للحصول على قائمة كاملة من مشاريع بوابة والمشاريع الفردية (مسارات) لفروع المرتبطة بكل مشروع.

للمراجعة مدونة المشاريع الخاصة بك في بوابة، عليك استخدام جيريت نظام مراجعة التعليمات البرمجية على شبكة الإنترنت.

  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

هذا يكمل مختبر الكود المبدئي لتطوير منصة 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، يرجى الإبلاغ عنها باستخدام أداة تتبع المشكلات الرابط في الجزء السفلي من أي صفحة. إرسال الأسئلة ل بناء الروبوت- المجموعة.