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

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

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

از درون دایرکتوری کاری خود، اسکریپت 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 به پلتفرم متن‌باز اندروید اشاره دارد.
    • (اختیاری) cf زمانی گنجانده می‌شود که قرار است هدف درون شبیه‌ساز Cuttlefish اجرا شود.
    • معماری و سخت‌افزار (نام رمز)، مانند x86_64_only_phone یا husky که نام رمز Pixel 8 Pro است. برای مشاهده فهرست نام‌های رمز دستگاه‌های گوگل، به نام‌های رمز دستگاه‌ها مراجعه کنید.
  • release_config روی یک پیکربندی انتشار تنظیم شده است، مانند پیکربندی انتشار توسعه به نام aosp_current . پیکربندی انتشار، ویژگی‌ها و کدهای خاصی را که پشت پرچم‌های راه‌اندازی ویژگی قرار دارند و برای یک ساخت فعال یا غیرفعال هستند، شناسایی می‌کند. برای اطلاعات بیشتر در مورد پیکربندی‌های انتشار، به تنظیم مقادیر راه‌اندازی پرچم ویژگی مراجعه کنید.

  • بخش build_variant رشته می‌تواند یکی از سه مقدار جدول زیر باشد:

    build_variant توضیحات
    user این نوع ساخت، دسترسی امنیتی محدودی را فراهم می‌کند و برای موارد زیر مناسب است:
    تولید. userdebug این نوع ساخت به توسعه‌دهندگان دستگاه کمک می‌کند

    عملکرد و قدرت نسخه‌های در حال توسعه را درک کنید. هنگام توسعه با نسخه userdebug ، دستورالعمل‌های userdebug . eng را دنبال کنید | این نوع نسخه، زمان ساخت سریع‌تری دارد و اگر عملکرد و قدرت برایتان مهم نیست، برای توسعه روزمره مناسب‌تر است.

اگر lunch بدون هیچ آرگومانی اجرا کنید، فهرستی از اهداف مشترک ارائه می‌شود. همچنین می‌توانید با کنار هم قرار دادن عناصر رشته هدف با استفاده از اطلاعات موجود در این صفحه و نام‌های رمزی که نشان‌دهنده سخت‌افزار خاص گوگل در Device codenames هستند، رشته‌های هدف خود را ایجاد کنید.

مشاهده هدف فعلی

برای دیدن تنظیمات فعلی ناهار، دستور زیر را اجرا کنید:

$ 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 در حین ساخت است.

تلاش برای ایجاد نتایج در خطاهای سیستم فایل فقط خواندنی

در طول ساخت، درخت منبع AOSP فقط خواندنی است. اگر ساختی که اجرا می‌کنید سعی کند درخت منبع را در طول پیکربندی محصول یا هر بخش دیگری از ساخت تغییر دهد، ساخت ممکن است با شکست مواجه شود و خطاهای سیستم فایل فقط خواندنی را گزارش دهد. از این گزینه‌ها می‌توان برای تغییر موقت درخت منبع به خواندنی-نوشتنی استفاده کرد:

  • برای تغییر کل درخت منبع به حالت خواندنی-نوشتنی در حین ساخت، BUILD_BROKEN_SRC_DIR_IS_WRITABLE=true را به محیط ساخت اضافه کنید.

  • برای تغییر بخشی از درخت خواندنی-نوشتنی در حین ساخت، BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST=" path1 , path2 , ... " استفاده کنید.

    مسیرها باید مسیرهای دایرکتوری‌هایی باشند که نوشتن در آنها مجاز است، نسبت به بالای فضای کاری.

عیب‌یابی خطاهای ساخت (۸.۰ یا قبل از آن)

اگر در حال ساخت AOSP نسخه ۸ یا قدیمی‌تر هستید، ممکن است 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 صحیح را همانطور که در بخش‌های JDK مربوط به Set Up for AOSP development (2.3 - 8.0) مشخص شده است، نصب کنید.
  • یک JDK دیگر که قبلاً نصب شده است در مسیر شما ظاهر می‌شود. JDK صحیح را به ابتدای مسیر خود اضافه کنید یا JDK مشکل‌دار را حذف کنید.