پروژه های اندروید حاوی بسیاری از فایل ها و ساختارهای دایرکتوری مربوط به ساخت هستند تا منبع و منابع برنامه شما را سازماندهی کنند. قبل از پرداختن به جزئیات پیکربندی، نگاهی به ساختار کلی و اصول اولیه آنچه در هر قسمت تعلق دارد خواهیم انداخت.
این جدول فایل های معمولی در یک پروژه اندروید را فهرست می کند. توضیحات هر فایل یا دایرکتوری شامل یادداشت هایی در مورد نوع محتوای آن است. بهترین روشها در طول زمان تکامل مییابند، و این توضیحات ممکن است با پروژهای که به ارث بردهاید یا از اینترنت دانلود کردهاید مطابقت نداشته باشد.
هنگام نوشتن فایل های ساخت خود، از یک رویکرد اعلامی استفاده کنید. منطق ساخت و تعاریف وظایف فقط باید در افزونه ها ظاهر شوند. با محدود کردن منطق ساخت به پلاگین ها، فایل های بیلد به اعلان داده ها تبدیل می شوند که برای درک و ویرایش مستقیم تر هستند. نسخههای آینده ممکن است شامل مشخصات جایگزین مانند Declarative Gradle باشد که از ایجاد منطق در فایلها جلوگیری میکند.
پوشه/فایل | استفاده کنید |
---|---|
gradle/ | دایرکتوری کش پروژه Gradle توسط Gradle مدیریت می شود و حاوی توزیع Gradle دانلود شده، کش پروژه و فایل های پیکربندی است. فایل های این دایرکتوری را تغییر ندهید! |
.idea/ | فراداده پروژه Android Studio فایل های این دایرکتوری را تغییر ندهید! |
build.gradle(.kts) | فقط باید شامل اعلان های پلاگین برای راه اندازی یک کلاس پلاگین مشترک در بین پروژه های فرعی باشد. کدهای دیگر باید در تنظیمات یا فایلهای ساخت سطح پروژه تودرتو قرار گیرند. |
gradle.properties | حاوی ویژگی های Gradle، کنترل جنبه های محیط ساخت Gradle مانند اندازه پشته، حافظه پنهان و اجرای موازی. برخی از ویژگیهای موقت اندروید در اینجا تعریف شدهاند تا تغییرات AGP DSL را با افزودن و حذف آنها کاهش دهند. |
gradlew (لینوکس، مک) gradlew.bat (ویندوز) | فایل بسته بندی Gradle با دانلود یک توزیع Gradle و سپس ارسال دستورات به آن، ساخت شما را بوت استرپ می کند. این به شما امکان میدهد بدون نیاز به نصب Gradle، بیلدها را اجرا کنید. |
محلی.ملاک | پیکربندی ماشین محلی حاوی ویژگیهای مربوط به دستگاه محلی، مانند مکان Android SDK است. این فایل را از کنترل منبع حذف کنید! |
settings.gradle(.kts) | حاوی اطلاعات ساخت جهانی برای مقداردهی اولیه Gradle و پیکربندی پروژه، مانند
|
گرید/ | |
↳ libs.versions.toml | متغیرهایی را برای وابستگی ها و افزونه های مورد استفاده در ساخت شما تعریف می کند. شما در اینجا مشخص میکنید که از کدام نسخهها میخواهید استفاده کنید، و از یکنواختی در تمام پروژههای فرعی در پروژه خود اطمینان حاصل کنید. |
↳ لفاف/ | |
↳ gradle-wrapper.jar | Gradle bootstrapping قابل اجرا توزیع Gradle مشخص شده را دانلود میکند (اگر وجود نداشته باشد)، و آن را اجرا میکند و هر آرگومان را در کنار آن ارسال میکند. |
↳ gradle-wrapper.properties | پیکربندی برای بسته بندی Gradle محل دانلود توزیع Gradle را مشخص می کند (از جمله اینکه از کدام نسخه استفاده شود). |
برنامه/ | پروژههای فرعی (معروف به "ماژول" در Android Studio) میتوانند برنامهها یا کتابخانههایی بسازند و ممکن است به پروژههای فرعی دیگر یا وابستگیهای خارجی وابسته باشند. |
↳ build.gradle (.kts) | نحوه ساخت این پروژه فرعی را اعلام می کند. هر پروژه فرعی نیاز به یک فایل ساخت جداگانه دارد و باید حاوی
شما نباید منطق ساخت (مانند تعاریف یا شرایط تابع Kotlin) یا اعلان وظایف را در فایل های ساخت خود قرار دهید. منطق ساخت و وظایف فقط باید در داخل افزونه ها باشد . |
↳ src/ | فایل های منبع زیر پروژه فایل های منبع (کد برنامه و منابع) را در مجموعه های منبع گروه بندی می کند. مجموعه منبع |
↳ اصلی/ | مجموعه منبع اصلی کد منبع و منابعی که در همه انواع ساخت مشترک هستند. این منبع به عنوان پایه برای همه ساختها عمل میکند، و مجموعههای منبع خاصتر دیگری به این منبع اضافه یا نادیده گرفته میشوند. |
↳ جاوا/ ↳ کاتلین/ | کد منبع کاتلین و جاوا دایرکتوری |
↳ پاسخ/ | حاوی منابع برنامه مانند فایل ها و تصاویر XML است. همه برنامهها از برخی منابع اولیه مانند نمادهای راهانداز استفاده میکنند، اما بسیاری از این منابع، مانند طرحبندیها و منوها، فقط در برنامههای مبتنی بر view استفاده میشوند. برنامه های Compose از منابع String تعریف شده در این فهرست استفاده می کنند. |
↳ AndroidManifest.xml | توسط مدیر بسته اندروید بخوانید تا به سیستم بگویید
|
↳ اندروید تست/ | مجموعه منبع تست دستگاه حاوی منبع آزمایشهایی است که روی دستگاه یا شبیهساز مجهز به Android اجرا میشوند. این تست ها به یک محیط اندروید واقعی دسترسی دارند، اما کندتر از تست های میزبان اجرا می شوند. |
↳ تست/ | مجموعه منبع تست میزبان حاوی منبع آزمایشهایی است که به صورت محلی در JVM اجرا میشوند، برخلاف آزمایشهایی که روی دستگاه اجرا میشوند. این تست ها بسیار سریعتر از تست های دستگاه اجرا می شوند. با این حال، هر فراخوانی سیستمی (از جمله چرخههای عمری که برنامه شما را اجرا میکند) باید مسخره، جعلی، کلهدار یا شبیهسازی شود. همه فایل های منبع در مجموعه منبع |
↳ proguard-rules.pro | قوانینی را برای کنترل کوچک شدن، بهینه سازی و مبهم سازی برنامه تعریف می کند. R8 کد و منابع غیر ضروری را حذف می کند، عملکرد زمان اجرا را بهینه می کند و با تغییر نام شناسه ها، کد شما را به حداقل می رساند. |
پروژه های اندروید حاوی بسیاری از فایل ها و ساختارهای دایرکتوری مربوط به ساخت هستند تا منبع و منابع برنامه شما را سازماندهی کنند. قبل از پرداختن به جزئیات پیکربندی، نگاهی به ساختار کلی و اصول اولیه آنچه در هر قسمت تعلق دارد خواهیم انداخت.
این جدول فایل های معمولی در یک پروژه اندروید را فهرست می کند. توضیحات هر فایل یا دایرکتوری شامل یادداشت هایی در مورد نوع محتوای آن است. بهترین روشها در طول زمان تکامل مییابند، و این توضیحات ممکن است با پروژهای که به ارث بردهاید یا از اینترنت دانلود کردهاید مطابقت نداشته باشد.
هنگام نوشتن فایل های ساخت خود، از یک رویکرد اعلامی استفاده کنید. منطق ساخت و تعاریف وظایف فقط باید در افزونه ها ظاهر شوند. با محدود کردن منطق ساخت به پلاگین ها، فایل های بیلد به اعلان داده ها تبدیل می شوند که برای درک و ویرایش مستقیم تر هستند. نسخههای آینده ممکن است شامل مشخصات جایگزین مانند Declarative Gradle باشد که از ایجاد منطق در فایلها جلوگیری میکند.
پوشه/فایل | استفاده کنید |
---|---|
gradle/ | دایرکتوری کش پروژه Gradle توسط Gradle مدیریت می شود و حاوی توزیع Gradle دانلود شده، کش پروژه و فایل های پیکربندی است. فایل های این دایرکتوری را تغییر ندهید! |
.idea/ | فراداده پروژه Android Studio فایل های این دایرکتوری را تغییر ندهید! |
build.gradle(.kts) | فقط باید شامل اعلان های پلاگین برای راه اندازی یک کلاس پلاگین مشترک در بین پروژه های فرعی باشد. کدهای دیگر باید در تنظیمات یا فایلهای ساخت سطح پروژه تودرتو قرار گیرند. |
gradle.properties | حاوی ویژگی های Gradle، کنترل جنبه های محیط ساخت Gradle مانند اندازه پشته، حافظه پنهان و اجرای موازی. برخی از ویژگیهای موقت اندروید در اینجا تعریف شدهاند تا تغییرات AGP DSL را با افزودن و حذف آنها کاهش دهند. |
gradlew (لینوکس، مک) gradlew.bat (ویندوز) | فایل بسته بندی Gradle با دانلود یک توزیع Gradle و سپس ارسال دستورات به آن، ساخت شما را بوت استرپ می کند. این به شما امکان میدهد بدون نیاز به نصب Gradle، بیلدها را اجرا کنید. |
محلی.ملاک | پیکربندی ماشین محلی حاوی ویژگیهای مربوط به دستگاه محلی، مانند مکان Android SDK است. این فایل را از کنترل منبع حذف کنید! |
settings.gradle(.kts) | حاوی اطلاعات ساخت جهانی برای مقداردهی اولیه Gradle و پیکربندی پروژه، مانند
|
گرید/ | |
↳ libs.versions.toml | متغیرهایی را برای وابستگی ها و افزونه های مورد استفاده در ساخت شما تعریف می کند. شما در اینجا مشخص میکنید که از کدام نسخهها میخواهید استفاده کنید، و از یکنواختی در تمام پروژههای فرعی در پروژه خود اطمینان حاصل کنید. |
↳ لفاف/ | |
↳ gradle-wrapper.jar | Gradle bootstrapping قابل اجرا توزیع Gradle مشخص شده را دانلود میکند (اگر وجود نداشته باشد)، و آن را اجرا میکند و هر آرگومان را در کنار آن ارسال میکند. |
↳ gradle-wrapper.properties | پیکربندی برای بسته بندی Gradle محل دانلود توزیع Gradle را مشخص می کند (از جمله اینکه از کدام نسخه استفاده شود). |
برنامه/ | پروژههای فرعی (معروف به "ماژول" در Android Studio) میتوانند برنامهها یا کتابخانههایی بسازند و ممکن است به پروژههای فرعی دیگر یا وابستگیهای خارجی وابسته باشند. |
↳ build.gradle (.kts) | نحوه ساخت این پروژه فرعی را اعلام می کند. هر پروژه فرعی نیاز به یک فایل ساخت جداگانه دارد و باید حاوی
شما نباید منطق ساخت (مانند تعاریف یا شرایط تابع Kotlin) یا اعلان وظایف را در فایل های ساخت خود قرار دهید. منطق ساخت و وظایف فقط باید در داخل افزونه ها باشد . |
↳ src/ | فایل های منبع زیر پروژه فایل های منبع (کد برنامه و منابع) را در مجموعه های منبع گروه بندی می کند. مجموعه منبع |
↳ اصلی/ | مجموعه منبع اصلی کد منبع و منابعی که در همه انواع ساخت مشترک هستند. این منبع به عنوان پایه برای همه ساختها عمل میکند، و مجموعههای منبع خاصتر دیگری به این منبع اضافه یا نادیده گرفته میشوند. |
↳ جاوا/ ↳ کاتلین/ | کد منبع کاتلین و جاوا دایرکتوری |
↳ پاسخ/ | حاوی منابع برنامه مانند فایل ها و تصاویر XML است. همه برنامهها از برخی منابع اولیه مانند نمادهای راهانداز استفاده میکنند، اما بسیاری از این منابع، مانند طرحبندیها و منوها، فقط در برنامههای مبتنی بر view استفاده میشوند. برنامه های Compose از منابع String تعریف شده در این فهرست استفاده می کنند. |
↳ AndroidManifest.xml | توسط مدیر بسته اندروید بخوانید تا به سیستم بگویید
|
↳ اندروید تست/ | مجموعه منبع تست دستگاه حاوی منبع آزمایشهایی است که روی دستگاه یا شبیهساز مجهز به Android اجرا میشوند. این تست ها به یک محیط اندروید واقعی دسترسی دارند، اما کندتر از تست های میزبان اجرا می شوند. |
↳ تست/ | مجموعه منبع تست میزبان حاوی منبع آزمایشهایی است که به صورت محلی در JVM اجرا میشوند، برخلاف آزمایشهایی که روی دستگاه اجرا میشوند. این تست ها بسیار سریعتر از تست های دستگاه اجرا می شوند. با این حال، هر فراخوانی سیستمی (از جمله چرخههای عمری که برنامه شما را اجرا میکند) باید مسخره، جعلی، کلهدار یا شبیهسازی شود. همه فایل های منبع در مجموعه منبع |
↳ proguard-rules.pro | قوانینی را برای کنترل کوچک شدن، بهینه سازی و مبهم سازی برنامه تعریف می کند. R8 کد و منابع غیر ضروری را حذف می کند، عملکرد زمان اجرا را بهینه می کند و با تغییر نام شناسه ها، کد شما را به حداقل می رساند. |