مدیریت اسکریپتهای Gradle build
در این درس فایلهای پروژه با نام Gradle scripts مورد بررسی قرار گرفته است. در همین راستا دانشجویان با مفهوم بیلد سیستم گریدل Gradle Build System در اندروید استودیو آشنا میشوند.
فهرست مطالب آموزش
Build System
پروژههای اندروید استودیو بر اساس بیلد سیستم Gradle ایجاد میشوند. بد نیست بدانید تبدیل کدهای برنامهنویسی به یک بسته قابل نصب یا یک برنامه قابل اجرا روی سیستم عامل ممکن است شامل چندین مرحله کامپایل، کپی فایل، فشردهسازی، بسته بندی و موارد دیگر شود که انجام این کارهای تکراری، در دفعات زیاد تنها سبب از بین رفتن زمان میشود. برای آسان شدن تبدیل کدها به بسته قابل نصب یا بسته قابل اجرا، ابزارهایی به نام Build System از گذشته ایجاد شده بودند. در واقع بیلد سیستم یک ابزار نرم افزاری است که کار کامپایل کردن کدها را به صورت اتوماتیک انجام میدهد. هدف اصلی بیلد سیستمها کامپایل و اجرا کدها است.
انواع بیلد در جاوا
جاوا سه بیلد سیستم اصلی دارد:
- Ant محصول Apache معرفی شده در سال 2000 – براساس زبان XML
- Maven محصول Apache معرفی شده در سال 2004 – براساس زبان XML
- Gradle محصول Hans Dockter در سال 2012 – براساس زبان Groovy
ابزار Gradle
نرمافزار Gradle یک ابزار «ساخت» یا Build System خودکار متن باز و جدید است که با زبان جاوا توسعه یافته و شرکت گوگل تصمیم گرفت از آن در نرمافزار Android Studio بهرهبرداری کند. علت این انتخاب، قابلیت توسعه بالا این نرمافزار و همچنین امکانات روزآمد و مفید آن بود. همچنین نوشتن اسکریپتهای لازم با این برنامه به یادگیری زبانی جدید نیاز ندارد. بلکه با استفاده از زبان جاوا به سادگی میشود اسکریپتهای دلخواه و افزونههای مورد نیاز را به Gradle افزود. گریدل مزایای هر دو بیلد سیستم Ant و Maven را در خود جمع کرده و خیلی زود به خاطر قدرت و انعطاف پذیری آن مورد توجه قرار گرفت.
وقتی شما یک پروژه اندروید استودیو ایجاد میکنید، آن شامل دو Gradle script و یک تعداد فایلهای پیکربندی مهم دیگر میشود.
به این پروژه Gradle scripts نگاه کنید، من از ویو اندروید استفاده میکنم، من فقط فایلهایی که در طول فرآیند توسعه استفاده میشوند را دنبال میکنم.
فایل local.properties
فولدر Gradle scripts را باز میکنم و به فایل local.properties میروم.
خب، این فایل در هیچ کدام از پروژههای فایلهای exercise نبود؛ چون که بد نیست بدانید این تنظیماتی منحصربفرد برای سیستم فایل هر کامپیوتر است. محل آن در Android SDK تعریف شده، و همانطور که میبینید، این سابفولدر خاص شبیه هیچ فولدری در کامپیوتر شما نیست. ولی این فایل وقتی برای اولین بار هر پروژه اندروید استودیویی را باز میکنید، به صورت خودکار تولید میشود، و آن باید محل SDK را در سیستم شما نشان بدهد. اگر کپی دیگری از اندروید SDK داشته باشم و بخواهم برای پروژه جاری از آن استفاده کنم، میتوانم این مقدار را مجدداً اینجا تنظیم کنم. این ویژگی و خیلی ویژگیهای دیگر میتوانند از یوزر اینترفیس اندروید استودیو تنظیم شوند.
تغییر SDK در اندروید استودیو
برای تغییر این مقدار خاص، باید ازمنو File، Project Structure ر انتخاب کنید و روی SDK location کلیک کنید، این مقدار را دقیقاً اینجا میبینید. پس اگر بخواهم، آنرا اینجا تغییر میدهم.
به علاوه نسخه Java Development Kit مورد استفاده خود را میبینید. اگر JDK را آپدیت کردید، باید برگردید به پروژههای اندروید استودیو قدیمیتر و این اطلاعات را اینجا آپدیت کنید.
فایل gradle.properties
فایل بعدی که میبینید gradle.properties است.
کل این فایل بصورت کامنت است، کامنتهایی درباره آرگومانهای JVM در طول فرآیند ساخت برنامه هستند، توجه داشته باشید که این آرگومانها همه مربوط به مدیریت حافظه Gradle هستند نه برنامه شما روی دستگاه اندرویدی. در واقع اطلاعات کلی پروژه داخل این فایل ذخیره میشوند. میتوانید به لینکهای رفرنس و مرجع که اطلاعات بیشتری درباره این فرآیند و چگونگی پیکربندی آن میدهند نگاه کنید.
فایلهای build.Gradle
بعد، دو فایل Gradle build وجود دارد. که هر دو آنها با نام build.Gradle هستند، ولی یکی ار آنها برای project است، و آن یکی برای ماژول یا خود برنامه است.
از نسخه project استفاده زیادی نمیشود.
آن با project برچسب خورده و بعد هم نام پروژه شما را گذاشته، تنظیمات اصلی که مربوط به کل پروژه است در این فایل قرار میگیرد.
چیزی که برای من اینجا جالب است چیزی در ماژول با نام app است.
مفهوم ماژول در اندروید استودیو
حالا قبل از اینکه سراغ این فایل برویم بیایید ببینیم یک ماژول در اندروید استودیو چیست.
یکبار دیگر به دیالوگ Project Structure میروم و پایین، یک لیستی از ماژولها را میبینیم، و میبینیم که من یک تک ماژول به نام app دارم و این نشان دهنده برنامه است.
در این دیالوگ، میتوانیم ورژن SDKای که میخواهیم را تنظیم کنیم، و همچنین میتوانم یکسری انتخاب داشته باشم که اینجا دارید آنها را با نام Build Tools Version میبینید.
وقتی اینجا تغییرات انجام میدهید، در واقع در فایل build.gradle دارید تغییرات ایجاد میکنید.
اگر مجدداً compile Sdk Version را تنظیم کنید، مقدار آنها را در اینجا و اینجا تغییر دادید، چون باید همیشه یک ورژنِ SDK برای compile و target استفاده کنید.
کمترین ورژن SDK اینجا است، و نشان دهنده API level 15 یا Android 4.0.3 یا بستنی حصیری است.
همانطور که قبلاً اشاره کردم، این جایی است که application ID خود را تنظیم میکنید، و همچنین یک بخشی این پایینتر با برچسب build Types وجود دارد. این یک ویژگی خیلی پیشرفته از فرآیند ایجاد است، جایی که میتوانید چندین نسخه از یک برنامه را برای توزیع کردن ایجاد کنید.
پایینتر در آخر این فایل، بلاک dependencies را میبینید. این یک لیستی از همه دایرکتوریها و فایلهای jar است که برای ایجاد برنامه نیاز دارید. ولی به جای فایلهای jar ، اندروید استودیو از چیزهایی به نام Maven dependency system استفاده میکند.
این خط، میگوید که هر فایل jar که شامل فولدرهای libs در جاوا است باید در مسیر کلاس هم باشد.
ولی این دو دستور در خطهای 25 و 26 به رشتههای وابستگی Maven اشاره دارند. App compat اشاره دارد به چیزی به نام support repository یا مخزن پشتیبانی. support repository شامل کلاسهای جاوا و کتابخانههایی که میتوانند به جای نسخههای هسته SDK استفاده شوند، میشود.
و design library یا طراحی کتابخانه شامل تعریف ابزارهای جدید که در دسترس مارشمالو هستند میشود، مثل قسمتی که مربوط به فعالیت یک button میشود. این دستورات در build script که به آنها Gradle میگوییم کامپایل شدند، جایی که کد مربوط به نیاز به تمام شدن کامپایل برنامه شما را دریافت میکند.
جمع بندی
خب؛ اینها فایلهای مهمی بودند که باید راجب به آنها میدانستید.
یکبار دیگر، local.properties در زمانی که اولین بار است که پروژه را باز میکنید تولید میشود، این فایل محل ذخیره Android SDK را به Android Gradle معرفی میکند.
gradle.properties که اطلاعات کلی پروژه است و به شما اجازه میدهد تخصیص حافظه را برای فرآیند Gradle build کنترل کنید.
و build.gradle، جایی است که ورژنهای اندروید خود را تنظیم میکنید و نشان میدهد برنامه شما به چه کدی وابسته است.
هر ماژول دارای یک build.gradle جداگانه است که تنظیمات مربوط به ماژول مخصوص خود آن داخل آن قرار میگیرد. میشود گفت ماژول در اینجا به معنی پروژههای زیرمجموعه پروژه اصلی است. ما در طول برنامه نویسی در اندروید استودیو همیشه با این فایل سر و کار داریم.