اندروید بسازید

برای ساخت اندروید، دستورالعمل‌های این صفحه را دنبال کنید.

محیط ساخت خود را تنظیم کنید

از درون دایرکتوری کاری خود، اسکریپت 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 مشکل‌دار را حذف کنید.