ساختار ساخت Android

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

این جدول فایل‌های معمول در پروژه Android را فهرست می‌کند. شرح هر فایل یا دایرکتوری شامل یادداشت‌هایی درباره نوع محتوایی است که به آن تعلق دارد. روال‌های مطلوب درطول زمان تکامل می‌یابند و این شرح‌ها ممکن است با پروژه‌ای که به ارث برده‌اید یا از اینترنت بارگیری کرده‌اید مطابقت نداشته باشند.

هنگام نوشتن فایل‌های ساخت، از رویکرد اعلانی استفاده کنید؛ منطق ساخت و تعاریف تکلیف فقط باید در افزایه‌ها ظاهر شوند. با محدود کردن منطق ساخت به افزونه‌ها، فایل‌های ساخت به اعلامیه‌های داده تبدیل می‌شوند که درک و ویرایش آن‌ها مستقیم‌تر است. نسخه‌های آینده ممکن است شامل مشخصات جایگزینی مانند Declarative Gradle باشند که از منطق ساخت در فایل‌ها جلوگیری می‌کند.

پوشه/فایل

استفاده کردن

.gradle/

فهرست راهنمای حافظه نهان پروژه Gradle

توسط Gradle مدیریت می‌شود و حاوی توزیع Gradle بارگیری‌شده، حافظه پنهان پروژه، و فایل‌های پیکربندی است.

فایل‌های این فهرست راهنما را تغییر ندهید!

.idea/

فراداده پروژه «استودیو Android»

فایل‌های این فهرست راهنما را تغییر ندهید!

build.gradle(.kts)

Root build file

باید فقط شامل اعلان‌های افزونه برای راه‌اندازی مسیر کلاس افزونه مشترک در زیرپروژه‌ها باشد.

کدهای دیگر باید در تنظیمات یا فایل‌های ساخت سطح پروژه تودرتو قرار داشته باشند.

gradle.properties

پیکربندی اجرای Gradle

حاوی ویژگی‌های Gradle است که جنبه‌های محیط ساخت Gradle مانند اندازه پشته، ذخیره‌سازی موقت، و اجرای موازی را کنترل می‌کند.

برخی‌از ویژگی‌های موقت Android در اینجا تعریف شده‌اند تا تغییرات در AGP DSL با اضافه شدن و سپس حذف شدن آن‌ها کاهش یابد.

gradlew (linux, Mac)

gradlew.bat (Windows)

Gradle wrapper file

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

local.properties

پیکربندی ماشین محلی

حاوی ویژگی‌های مربوط به ماشین محلی است، مثل مکان کیت توسعه نرم‌افزار Android.

این فایل را از کنترل منبع مستثنی کنید!

settings.gradle(.kts)

مقداردهی اولیه ساخت Gradle

حاوی اطلاعات ساخت سراسری برای مقداردهی اولیه Gradle و پیکربندی پروژه است، مانند

  • نام پروژه
  • فهرست زیرپروژه‌ها برای گنجاندن در این ساخت
  • مشخصات مخزن برای یافتن افزایه‌ها و وابستگی‌ها
  • واردات کاتالوگ نسخه خارجی.

gradle/‎

↳ libs.versions.toml

کاتالوگ نسخه

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

↳ wrapper/

↳ gradle‑wrapper.jar

راه‌اندازی Gradle قابل‌اجرا

توزیع Gradle مشخص‌شده را بارگیری می‌کند (اگر وجود نداشته باشد) و آن را اجرا می‌کند و هرگونه متغیر مستقل را منتقل می‌کند

↳ gradle‑wrapper.properties

پیکربندی برای بسته‌بندی‌کننده Gradle

مشخص می‌کند که توزیع Gradle از کجا بارگیری شود (ازجمله اینکه از کدام نسخه استفاده شود).

برنامه/

فهرست راهنمای زیرپروژه

زیرپروژه‌ها (که در Android Studio با نام «مدول» شناخته می‌شوند) می‌توانند برنامه‌ها یا کتابخانه‌ها را بسازند و ممکن است به زیرپروژه‌های دیگر یا وابستگی‌های خارجی وابسته باشند.

app نام مرسوم برای زیرپروژه برنامه سطح بالا است (اما نام الزامی نیست). دیگر زیرپروژه‌ها ساختارهای مشابهی با نام‌های متفاوت دارند.

هر دایرکتوری می‌تواند زیرپروژه باشد و باید حداقل یک فایل build.gradle(.kts) داشته باشد و بااستفاده از settings.gradle(.kts) در ساخت گنجانده شود.

↳ build.gradle(.kts)

فایل ساخت سطح زیرپروژه

نحوه ساختن این زیرپروژه را اعلام می‌کند. هر زیرپروژه به فایل ساخت جداگانه‌ای نیاز دارد و باید حاوی موارد زیر باشد

  • افزایه‌های استفاده‌شده برای ساخت این زیرپروژه
  • بلوک‌های پیکربندی موردنیاز افزایه‌ها
  • وابستگی‌ها (کتابخانه‌ها و پلاتفرم‌ها) که هنگام ساختن این زیرپروژه لحاظ شده‌اند

نباید منطق ساخت (مثل تعاریف یا شرایط تابع Kotlin) یا اعلان‌های تکلیف را در فایل‌های ساخت خود بگنجانید. منطق ساخت و تکالیف باید فقط در افزایه‌ها گنجانده شود.

↳ src/

فایل‌های منبع زیرپروژه

فایل‌های منبع (کد برنامه و منابع) را در مجموعه‌های منبع گروه‌بندی می‌کند. مجموعه منبع main حاوی فایل‌های منبعی است که برای همه انواع مشترک است، درحالی‌که مجموعه‌های منبع دیگر حاوی فایل‌های منبعی هستند که برای یک نوع منحصربه‌فرد است.

↳ main/

مجموعه منبع اصلی

کد منبع و منابعی که در همه تنوع‌های ساخت مشترک هستند. این منبع به‌عنوان پایه برای همه ساخت‌ها عمل می‌کند و مجموعه‌های منبع دیگر و خاص‌تر به این منبع اضافه می‌شوند یا آن را لغو می‌کنند.

↳ java/

↳ kotlin/

کد منبع Kotlin و Java

دایرکتوری java می‌تواند حاوی کد منبع ترکیبی Java و Kotlin باشد. اگر این زیرپروژه فقط حاوی کد Kotlin است، می‌توانید نام این دایرکتوری را تغییر دهید kotlin.

Android
پلاتفرمی Kotlin-first است. منبع Java پشتیبانی می‌شود، اما میاناهای برنامه‌سازی کاربردی جدید زبان Kotlin را هدف قرار می‌دهند. توصیه می‌کنیم برای همه کدهای جدید و به‌روزرسانی‌های عمده کدهای موجود از Kotlin استفاده کنید.

↳ res/

فایل‌های منبع Android

حاوی منابع برنامه، مانند فایل‌های XML و تصاویر است. همه برنامه‌ها از برخی منابع پایه، مانند نمادهای راه‌انداز، استفاده می‌کنند، اما بسیاری از این منابع، مانند چیدمان‌ها و منوها، فقط در برنامه‌های مبتنی بر نما استفاده می‌شوند. برنامه‌های Compose از منابع رشته تعریف‌شده در این دایرکتوری استفاده می‌کنند.

↳ AndroidManifest.xml

فراداده برنامه Android

توسط مدیر بسته Android خوانده می‌شود تا به سیستم بگوید

  • مؤلفه‌های تعریف‌شده توسط برنامه‌تان
  • اجازه‌های لازم
  • سازگاری دستگاه
  • محدودیت‌های پلاتفرم Android

↳ androidTest/

مجموعه منبع آزمایش دستگاه

حاوی منبعی برای آزمایش‌هایی است که در دستگاه یا شبیه‌ساز مجهز به Android اجرا خواهد شد. این آزمایش‌ها به محیط واقعی Android دسترسی دارند، اما کندتر از آزمایش‌های میزبان اجرا می‌شوند.

همه فایل‌های منبع در مجموعه منبع main برای استفاده توسط منبع تحت androidTest دردسترس هستند.

↳ test/‎

آزمایش میزبان مجموعه منبع

حاوی منبعی برای آزمایش‌هایی است که به‌صورت محلی در JVM اجرا می‌شوند، برخلاف آزمایش‌هایی که در دستگاه اجرا می‌شوند. اجرای این آزمایش‌ها بسیار سریع‌تر از آزمایش‌های دستگاه است. بااین‌حال، هرگونه فراخوانی سیستم (ازجمله چرخه‌های حیاتی که برنامه شما را اجرا می‌کنند) باید شبیه‌سازی، جعل، یا به‌نحوی دیگر شبیه‌سازی شوند.

همه فایل‌های منبع در مجموعه منبع main برای استفاده توسط منبع تحت آزمایش دردسترس هستند.

↳ proguard-rules.pro

قوانین پیکربندی R8

قوانینی را برای کنترل کوچک کردن، بهینه‌سازی، و مبهم‌سازی برنامه تعریف می‌کند. R8 کدها و منابع غیرضروری را حذف می‌کند، عملکرد زمان اجرا را بهینه می‌کند، و با تغییر نام شناسه‌ها کد شما را بیشتر کوچک می‌کند.