توسعه دهنده Android Codelab

شما می توانید به توسعه گسترده ترین سیستم عامل در تاریخ زمین کمک کنید. بله ، شما اینجا هستید تا سفر تبدیل شدن به یک مهندس پلت فرم Android را آغاز کنید.

اگرچه این مسیر چالش برانگیز است ، اما تیم Android تلاش می کند تا در هر نسخه ای سفر شما را ساده کند. و این تیم هر روز از طریق کار مستقیم در پروژه منبع باز Android (AOSP) پیشرفت هایی را انجام می دهد.

بنابراین بنشینید ، یک ترمینال را آتش بزنید و بیایید تاریخ را بسازیم.

اهداف

مأموریت این codelab دو است:

  1. برای اینکه طعم کوچکی از نحوه کار توسعه دهندگان برای مهندسان اندرویدی که بر روی پلتفرم (سیستم عامل) کار می کنند ، داشته باشید.
  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
    

همگام سازی اولیه ممکن است یک ساعت یا بیشتر طول بکشد.

هر پرداخت مخزن توسط یک نشان فایل مانیفست . مجاز است بیش از 1 تسویه حساب مجدد در یک زمان داشته باشید ، به شرطی که در فهرستهای مجزا وجود داشته باشند. اما توجه داشته باشید که هر بار خرید و توسعه تقریباً 300 گیگابایت استفاده می کند (و در حال افزایش است) ، بنابراین یا خود را به 2 بار بازپرداخت محدود کنید ، یا سیستم خود را با یک درایو ثانویه تقویت کنید.

کد را بسازید

برای ساختن آندروید، شما باید یک انتخاب هدف نوع دستگاه به ساخت با lunch فرمان. هدف یک جایگشت دستگاه است ، مانند یک مدل خاص یا فاکتور فرم.

هدف دستگاه شامل زیر، aosp_cf_x86_64_phone-userdebug ، شما را قادر به ساخت ده پا دستگاه آندروید مجازی برای تست بدون یک دستگاه فیزیکی است.

برای ساخت و به جای به روز رسانی یک دستگاه فیزیکی، هدف دیگری را انتخاب کنید و دستورالعملهای مربوط به چشمک زن دستگاه .

  1. با اجرای دستور زیر از ریشه بررسی کد منبع ، محیط خود را برای ساخت دستگاه های Android تنظیم کنید:

    source build/envsetup.sh
    
  2. دستور build را به دستور ناهار منتقل کنید ، مانند این:

    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. دستگاه Cuttlefish را انتخاب کنید.

باید با یک جلسه 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 به مخزن ساده توسط بسته بندی دستورات مانند git clone به کار در سراسر منابع Git متعدد (یا پروژه) در یک بار.

مشاهده ابزار کنترل منبع برای مروری بر دستگاه گوارش و مخزن همراه با لینک به مستندات کامل در کار با کد منبع اندروید. را ببینید مخزن AOSP برای لیست کامل از پروژه های دستگاه گوارش و پروژه های فردی (مسیرهای) برای شاخه های مرتبط با هر پروژه.

برای بررسی کد از پروژه های خود در 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

تغییر خود را در Gerrit مشاهده کنید

به پیوند چاپ شده در ترمینال بروید که شبیه به این است:

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

با این کار codelab اولیه برای توسعه پلتفرم اندروید تکمیل می شود. مشاهده تسلیم تکه برای گام های بعدی، و برای جزئیات کامل در حال توسعه آندروید، بقیه از این سایت را مشاهده کنید.

تغییر خود را برگردانید

به طور معمول ، پس از آزمایش و پس از بررسی و تأیید ، تغییرات خود را در 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 روبرو می شوند، لطفا آنها را با استفاده از شماره ردیاب لینک در پایین هر صفحه. ارسال سوالات به آندروید سازی گروه.