برای ساخت اندروید، دستورالعملهای این صفحه را دنبال کنید.
محیط ساخت خود را تنظیم کنید
از درون دایرکتوری کاری خود، اسکریپت envsetup.sh را برای تنظیم محیط ساخت خود، سورس کنید:
source build/envsetup.sh این اسکریپت چندین دستور را وارد میکند که به شما امکان میدهد با کد منبع اندروید، از جمله دستورات استفاده شده در این صفحه، کار کنید. برای مشاهده کد منبع اسکریپت، به platform/build/envsetup.sh مراجعه کنید. برای مشاهده راهنمای داخلی، hmm را تایپ کنید.
یک هدف انتخاب کنید
قبل از ساخت اندروید، باید هدفی را برای ساخت مشخص کنید. یک هدف، پلتفرم هدفی را که برای آن برنامه میسازید، نشان میدهد. برای شناسایی هدف خود برای ساخت، از دستور lunch و به دنبال آن یک رشته که نشان دهنده هدف است، استفاده کنید. به عنوان مثال:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugشما باید خلاصهای از هدف و محیط ساخت خود را ببینید:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================
رشتهای که هدف را نشان میدهد، قالب زیر را دارد:
lunch product_name-release_config-build_variantاجزای این رشته عبارتند از:
product_nameنام محصولی است که میخواهید بسازید، مانندaosp_cf_x86_64_only_phoneیاaosp_husky.product_nameخاص شما میتواند از قالب مخصوص دستگاه شما پیروی کند، اما قالبی که گوگل برای دستگاههای خود استفاده میکند دارای این اجزا است:-
aospبه پروژه متنباز اندروید اشاره دارد. - به صورت اختیاری، زمانی که قرار است هدف درون شبیهساز Cuttlefish اجرا شود،
cfنیز گنجانده میشود. - نام رمز معماری و سختافزار، مانند
x86_64_only_phoneیاhuskyکه نام رمز Pixel 8 Pro است. برای مشاهده فهرستی از نامهای رمز دستگاههای گوگل، به نامهای رمز دستگاهها مراجعه کنید.
-
release_configروی یک پیکربندی انتشار تنظیم شده است، مانند پیکربندی انتشار توسعه به نامaosp_current. پیکربندی انتشار، ویژگیها و کدهای خاصی را که پشت پرچمهای راهاندازی ویژگی قرار دارند و برای یک ساخت فعال یا غیرفعال هستند، شناسایی میکند. برای اطلاعات بیشتر در مورد پیکربندیهای انتشار، به تنظیم مقادیر راهاندازی پرچم ویژگی مراجعه کنید.بخش
build_variantرشته میتواند یکی از سه مقدار جدول زیر باشد:build_variantتوضیحات userاین نوع ساخت، دسترسی امنیتی محدودی را فراهم میکند و برای محیط عملیاتی مناسب است. userdebugاین نوع ساخت به توسعهدهندگان دستگاه کمک میکند تا عملکرد و قدرت نسخههای در حال توسعه را درک کنند. هنگام توسعه با ساخت userdebug، دستورالعملهای userdebug را دنبال کنید.engاین نوع ساخت، زمان ساخت سریعتری دارد و برای محیطهای توسعه روزمره (جایی که عملکرد و قدرت اهمیت کمتری دارند) مناسبتر است.
اگر lunch بدون هیچ آرگومانی اجرا کنید، lunch فهرستی از اهداف مشترک را ارائه میدهد. برای ایجاد رشتههای هدف سفارشی، عناصر رشته هدف را با نامهای رمز سختافزار ترکیب کنید. برای فهرستی از نامهای رمز، به نامهای رمز دستگاه مراجعه کنید.
مشاهده هدف فعلی
برای دیدن تنظیمات فعلی ناهار، دستور زیر را اجرا کنید:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
کد را بسازید
دستور زیر را برای ساخت هدف خود اجرا کنید. بسته به مشخصات ایستگاه کاری شما، اولین ساخت میتواند کمتر از یک ساعت و تا چند ساعت طول بکشد. ساختهای بعدی به طور قابل توجهی زمان کمتری میبرند.
m خروجی ساخت شما در $OUT_DIR ظاهر میشود. اگر اهداف مختلفی بسازید، هر ساخت هدف در $OUT_DIR ظاهر میشود.
دستور m از بالای درخت ساخته میشود، بنابراین میتوانید m از درون زیردایرکتوریها اجرا کنید. اگر متغیر محیطی TOP تنظیم شده باشد، دستور m از آن استفاده میکند. اگر TOP تنظیم نشده باشد، دستور m درخت را از دایرکتوری فعلی جستجو میکند و سعی میکند بالای درخت را پیدا کند.
دستور m میتواند وظایف موازی را با آرگومان -jN مدیریت کند. اگر آرگومان -j را ارائه ندهید، سیستم ساخت به طور خودکار تعداد وظایف موازی را که فکر میکند برای سیستم شما بهینه است، انتخاب میکند.
شما میتوانید با فهرست کردن نام ماژولها در خط فرمان m ، به جای تصویر کامل دستگاه، ماژولهای خاصی را بسازید. علاوه بر این، دستور m برخی اهداف کاذب به نام goal را ارائه میدهد. به عنوان مثال، m nothing چیزی نمیسازد، بلکه ساختار ساخت را تجزیه و تحلیل و اعتبارسنجی میکند. برای مشاهده لیستی از goalهای معتبر، m help را تایپ کنید.
عیبیابی خطاهای ساخت
این بخش شامل دستورالعملهایی برای مدیریت خطاهای ساخت است.
خطاهای سیستم فایل فقط خواندنی (اندروید ۱۷ و بالاتر)
در طول ساخت، درخت منبع AOSP فقط خواندنی است. اگر ساختی که اجرا میکنید سعی کند درخت منبع را در طول پیکربندی محصول یا هر بخش دیگری از ساخت تغییر دهد، ساخت ممکن است با شکست مواجه شود و خطاهای سیستم فایل فقط خواندنی را گزارش دهد. میتوانید از این گزینهها برای تغییر موقت درخت منبع به خواندنی-نوشتنی استفاده کنید:
برای تغییر کل درخت منبع به حالت خواندنی-نوشتنی در حین ساخت،
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=trueرا به محیط ساخت اضافه کنید.برای تغییر بخشی از درخت به حالت خواندنی-نوشتنی در حین ساخت، از
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST=" path1 , path2 , ... "استفاده کنید. مسیرها باید مسیرهای دایرکتوریهایی باشند که نوشتن در آنها مجاز است، نسبت به بالای فضای کاری.
نسخه جاوا اشتباه است (اندروید ۸.۰ و پایینتر)
اگر در حال ساخت اندروید ۸.۰ (سطح API ۲۶) و پایینتر هستید، ممکن است m هنگام مواجهه با مشکلی در نسخه جاوا، متوقف شود. برای مثال، ممکن است این پیام را دریافت کنید:
************************************************************
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 صحیح نصب نشده است. برای اطلاعات بیشتر، به بخش «راهاندازی برای توسعه AOSP (2.3-8.0)» مراجعه کنید.
- یک JDK دیگر که قبلاً نصب شده است در مسیر شما ظاهر میشود. JDK صحیح را به ابتدای مسیر خود اضافه کنید یا JDK مشکلدار را حذف کنید.