برای شروع ساخت اندروید این دستورالعمل ها را دنبال کنید.
راه اندازی محیط
محیط را با اسکریپت envsetup.sh
راه اندازی کنید:
source build/envsetup.sh
یا
. build/envsetup.sh
اسکریپت را در platform/build/envsetup.sh برای توضیحات مربوط به دستورات، از جمله ناهار برای انتخاب اهداف دستگاه و تاپاس برای ساختن برنامههای جداشده، مانند برنامه تلویزیون مرجع ، ببینید.
شما باید این دستور را پس از هر repo sync
مجدداً صادر کنید تا تغییراتی را در آن اسکریپت دریافت کنید. توجه داشته باشید که جایگزینی source
با .
(یک نقطه) چند کاراکتر را ذخیره می کند و فرم کوتاه بیشتر در مستندسازی استفاده می شود.
اسکریپت envsetup.sh
چندین دستور را وارد می کند که شما را قادر می سازد با کد منبع اندروید کار کنید، از جمله دستورات استفاده شده در این تمرین.
برای مشاهده لیست کامل دستورات موجود، اجرا کنید:
hmm
انتخاب یک هدف
ناهار
انتخاب کنید کدام هدف را با lunch
بسازید. lunch product_name - build_variant
product_name به عنوان محصول برای ساخت و build_variant به عنوان نوع ساخت انتخاب می کند و آن انتخاب ها را در محیط ذخیره می کند تا با فراخوانی های بعدی m
و سایر دستورات مشابه خوانده شوند.
پیکربندی دقیق را می توان به عنوان یک آرگومان ارسال کرد. به عنوان مثال، دستور زیر به یک ساخت کامل برای شبیه ساز با فعال بودن تمام اشکال زدایی اشاره دارد:
lunch aosp_arm-eng
اگر بدون آرگومان اجرا شود، lunch
از شما می خواهد که یک هدف را از منو انتخاب کنید، اما توجه داشته باشید که منو شامل همه امکانات نیست. به انتخاب ساخت دستگاه برای پیکربندیهای ساخت همه دستگاههای پشتیبانیشده در AOSP رجوع کنید، یا با افراد تیم خود در مورد ناهار مناسب دستگاهی که روی آن کار میکنید صحبت کنید.
همه اهداف ساخت به شکل BUILD-BUILDTYPE
هستند، که در آن BUILD
یک نام رمز است که به ترکیب ویژگی خاص اشاره دارد. BUILDTYPE
یکی از موارد زیر است.
نوع ساخت | استفاده کنید |
---|---|
کاربر | دسترسی محدود؛ مناسب برای تولید |
کاربر اشکال زدایی | مانند کاربر اما با دسترسی ریشه و قابلیت دیباگ. بسیار نزدیک به عملکرد تولید |
eng | پیکربندی توسعه با زمان ساخت سریعتر. مناسب ترین برای توسعه روز به روز |
ساختار userdebug
باید مانند ساخت user
رفتار کند، با قابلیت فعال کردن اشکالزدایی اضافی که معمولاً مدل امنیتی پلتفرم را نقض میکند. این باعث می شود که ساخت userdebug
برای درک عملکرد و قدرت استفاده شده توسط انتشار خوب باشد. هنگام توسعه با ساخت userdebug
، دستورالعملهای userdebug را دنبال کنید.
eng
مهندسی بهره وری مهندسی را برای مهندسانی که روی پلت فرم کار می کنند در اولویت قرار می دهد. ساخت eng
بهینهسازیهای مختلفی را که برای به حداکثر رساندن عملکرد زمان اجرا استفاده میشوند، خاموش میکند. در غیر این صورت، ساخت eng
بسیار شبیه به ساختهای user
و userdebug
است تا توسعهدهندگان دستگاه میتوانند نحوه رفتار کد در آن محیطها را ببینند.
برای مشاهده تنظیمات فعلی ناهار، دستور را اجرا کنید:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
برای اطلاعات بیشتر در مورد ساخت و اجرا بر روی سخت افزار واقعی، به دستگاه های چشمک زن مراجعه کنید.
تاپاس
دستور tapas
، ساخت برنامههای جداشده را پیکربندی میکند. برنامه های جداگانه ای را برای ساخت سیستم ساخت اندروید انتخاب می کند. برخلاف lunch
، tapas
درخواست ساخت تصاویر برای یک دستگاه را ندارد.
tapas help
برای اطلاعات بیشتر در مورد دستور اجرا کنید.
ساخت کد
این بخش خلاصه ای سریع برای اطمینان از کامل بودن راه اندازی است.
همه چیز را با m
بسازید. m
می تواند وظایف موازی را با آرگومان -jN
انجام دهد. اگر آرگومان -j
ارائه نکنید، سیستم ساخت به طور خودکار تعداد کار موازی را انتخاب می کند که فکر می کند برای سیستم شما بهینه است.
m
همانطور که در بالا توضیح داده شد، می توانید ماژول های خاصی را به جای تصویر کامل دستگاه با لیست کردن نام آنها در خط فرمان m
خود بسازید. علاوه بر این، m
برخی شبه هدف ها را برای مقاصد خاص فراهم می کند. چند نمونه عبارتند از:
-
droid
-m droid
ساخت معمولی است. این هدف اینجاست زیرا هدف پیش فرض نیاز به نام دارد. -
all
-m all
هر کاری را کهm droid
انجام می دهد را می سازد، به علاوه هر چیزی که برچسبdroid
ندارد. سرور ساخت این را اجرا می کند تا مطمئن شود هر چیزی که در درخت است و یک فایلAndroid.mk
دارد ساخته می شود. -
m
- ساخت ها را از بالای درخت اجرا می کند. این مفید است زیرا می توانیدmake
از داخل زیر شاخه ها اجرا کنید. اگر مجموعه متغیر محیطیTOP
را دارید، از آن استفاده می کند. اگر این کار را نکنید، درخت را از فهرست فعلی جستجو می کند و سعی می کند بالای درخت را پیدا کند. شما می توانید کل درخت کد منبع را با اجرایm
بدون آرگومان بسازید یا با مشخص کردن نام آنها، اهداف خاصی بسازید. -
mma
- همه ماژول ها را در فهرست فعلی و وابستگی های آنها می سازد. -
mmma
- همه ماژول ها را در فهرست های ارائه شده و وابستگی های آنها ایجاد می کند. -
croot
-cd
تا بالای درخت. -
clean
-m clean
تمام فایل های خروجی و میانی را برای این پیکربندی حذف می کند. این همانrm -rf out/
است.
m help
اجرا کنید تا ببینید m
شبه هدف های دیگر چه چیزی را فراهم می کند.
اجرای ساخت
می توانید بیلد خود را بر روی شبیه ساز اجرا کنید یا آن را روی دستگاه فلش کنید. از آنجایی که شما قبلاً هدف ساخت خود را با lunch
انتخاب کرده اید، بعید است که روی هدفی متفاوت از هدفی که برای آن ساخته شده است اجرا شود.
فلش با فست بوت
برای فلش کردن یک دستگاه، از fastboot
استفاده کنید، که پس از ساخت موفق باید در مسیر شما قرار گیرد. برای دستورالعملها به فلش کردن دستگاه مراجعه کنید.
شبیه سازی دستگاه اندرویدی
شبیه ساز به طور خودکار با فرآیند ساخت به مسیر شما اضافه می شود. برای اجرای شبیه ساز، تایپ کنید:
emulator
درک اثر انگشت ساخت
برای ردیابی و گزارش مشکلات مرتبط با یک ساخت اندروید خاص، درک اثر انگشت ساخت مهم است. اثر انگشت ساخت یک رشته منحصر به فرد و قابل خواندن برای انسان است که حاوی اطلاعات سازنده است که برای هر بیلد صادر می شود. توضیحات FINGERPRINT را در بخش Build Parameters در سند تعریف سازگاری Android (CDD) برای نحو دقیق ببینید.
اثر انگشت ساخت، اجرای و بازبینی خاص اندروید را نشان میدهد. این کلید منحصربهفرد به توسعهدهندگان برنامه و دیگران اجازه میدهد تا مشکلات مربوط به نسخههای سفتافزار خاص را گزارش کنند. گزارش اشکالات برای فرآیند گزارش مشکل اندروید را ببینید.
اثر انگشت ساخت تمام جزئیات پیاده سازی اندروید را در بر می گیرد:
- API ها: اندروید و بومی و همچنین رفتارهای نرم افزار API
- Core API و برخی رفتارهای UI سیستم
- الزامات سازگاری و امنیتی تعریف شده در CDD
- مشخصات محصول و تنظیمات استفاده-ویژگی استفاده شده توسط برنامهها برای هدف قرار دادن دستگاههایی که نیازهای مورد انتظار را برآورده میکنند
- پیاده سازی قطعات سخت افزاری و نرم افزاری
برای جزئیات کامل به CDD و افزودن دستگاه جدید برای دستورالعملهای ایجاد یک دستگاه اندروید کاملاً جدید مراجعه کنید.
عیب یابی خطاهای رایج ساخت
نسخه جاوا اشتباه است
اگر میخواهید نسخهای از Android بسازید که با نسخه جاوا خود مطابقت ندارد، make
پیامی مانند:
************************************************************ You are attempting to build with the incorrect version of java. Your version is: WRONG_VERSION. The correct version is: RIGHT_VERSION. Please follow the machine setup instructions at https://source.android.com/source/initializing.html ************************************************************
در اینجا دلایل و راه حل های احتمالی وجود دارد:
- عدم نصب JDK صحیح همانطور که در الزامات JDK مشخص شده است. مطمئن شوید که مراحل تنظیم محیط و انتخاب هدف را دنبال کرده اید.
- JDK دیگری که قبلاً نصب شده بود در مسیر شما ظاهر می شود. JDK صحیح را در ابتدای مسیر خود قرار دهید یا JDK مشکل ساز را حذف کنید.
بدون مجوز USB
به طور پیش فرض در اکثر سیستم های لینوکس، کاربران غیرمجاز نمی توانند به پورت های USB دسترسی داشته باشند. اگر خطای رد کردن مجوز را مشاهده کردید، دستورالعملهای موجود در پیکربندی دسترسی USB را دنبال کنید.
اگر ADB قبلاً در حال اجرا بود و نمیتوانید پس از تنظیم آن قوانین به دستگاه متصل شوید، میتوانید آن را با adb kill-server
حذف کنید. این دستور باعث می شود ADB با پیکربندی جدید راه اندازی مجدد شود.