میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

استفاده از Gradle در اندروید

با سلام خدمت همه دوستان در این آموزش قصد داریم در مورد استفاده از Gradle در اندروید مطالبی را آموزش دهیم

فرایند build پروژه های اندروید توسط سیستم کامپایل Gradle مدیریت می شود. زمانی که پروژه ی جدیدی در محیط برنامه نویسی اندروید ایجاد می کنید، به دنبال آن  build script ( فایل build.gradle ) نیز به طور خودکار تولید می شوند. در واقع محیط کاری Android Studio به صورت خودکار runtime و بستر اجرای Gradle را دربرمی گیرد، از این رو احتیاجی به نصب ابزار یا افزونه ی جداگانه وجود ندارد.

سیستم Gradle build طوری طراحی شده که از سناریوهای پیچیده مختلف برای ایجاد اپلیکیشن های اندرویدی پشتیبانی کند:

Multi-distribution : وضعیتی که یک اپلیکیشن بایستی برای چندین سرویس گیرنده یا شرکت اختصاصی تنظیم شود.

Multi-apk : تولید چندین فایل apk از یک اپلیکیشن جهت سازگاری با انواع دستگاه ها و استفاده ی مجدد از بخش هایی از کد برنامه در این فایل های apk.

همچنین می توانید از یک wrapper script که سیستم Gradle تولید می کند، استفاده نمایید

( wrapper script :wrapper script یک اسکریپت است که چندین دستور و اسکریپت که قابلیت اجرا در برنامه ی اصلی را ندارد، در بر می گیرد.) این wrapper به شما امکان می دهد تا یک Gradle build را بدون اینکه لازم باشد هیچ ابزار و فایل دیگری نصب کنید، از خط دستور (command line) اجرا نمایید. زمانی که بر روی دکمه ی run در محیط کاری Android Studio کلیک می کنید، تسک مربوطه ی Gradle راه اندازی شده و اپلیکیشن اجرا می شود.

نکته: می توانید به ورژن های مختلف افزونه ی Gradle تحت آدرس https://jcenter.bintray.com/com/android/tools/build/gradle/  دسترسی داشته باشید

 

 


پروسه ای که کد برای تبدیل به اپلیکیشن اندروید طی می کند

کامپایلر جاوا فایل های حاوی کدهای جاوا (java source file) را به فایل هایی با پسوند .class تبدیل می کند (فایل هایی که دربردانده ی bytecodeها و کدهای زبان میانی بوده و بر روی JVM اجرا می شود).

Android SDK یک ابزار به نام dx دارد که فایل های .class را به فایل هایی با پسوند  .dex ( فایل های اجرایی Dalvik ) تبدیل می کند. تمامی فایل های کلاس اپلیکیشن در فایل اجرایی Dalvik جایگذاری می شوند. در طی این پروسه تبدیل، اطلاعات مازاد موجود در فایل های .class داخل فایل .dex بهینه می شوند. برای مثال، چناچه یک String در چندین فایل .class وجود داشته باشد، فایل .dex تنها یک reference یا اشاره گر به متغیر مزبور را نزد خود نگه می دارد.

فایل های .dex از نظر حجم بسیار سبک تر از فایل های .class متناظر هستند.

فایل .dex و سایر منابع و محتوا همچون image و فایل های XML همگی در قالب یک فایل .apk گنجانده می شوند. این وظیفه را ابزار پکیج بندی منابع و محتوای اپلیکیشن های اندرویدی به نام(Android Asset Packaging Tool) aapt  بر عهده دارد

فایل .apk خروجی، دربردارنده ی تمامی داده های لازم برای اجرای اپلیکیشن اندروید بوده و به راحتی از طریق ابزار adb قابل نصب بر روی دستگاه اندرویدی می باشد.

از ویرایش ۵٫۰ به بعد، Android RunTime به عنوان ابزار بارگذاری و اجرا / runtime تمامی اپلیکیشن های اندرویدی ایفای نقش می کند. ART یک قابلیت است که اپلیکیشن را درست به مجرد درخواست کاربر لود کرده و اجرا می کند. بدین وسیله سرعت اجرای اپلیکیشن به مراتب نسبت به زمانی که از Dalvik استفاده می شد، بالا می رود. در واقع ART از تلفیقی از دو روش کامپایل  Ahead of Time (ترجمه ی کد زودتر از درخواست کاربر) و  Just-in-Time (ترجمه ی کد به محض درخواست کاربر) استفاده می کند. به هنگام نصب یک اپلیکیشن بر روی دستگاه اندرویدی، کد اپلیکیشن به زبان ماشین ترجمه می شود.

ابزار dex2oat فایل .dex که خروجی مجموعه ابزار اندروید می باشد را تحویل گرفته و آن را به یک فایل ( EFL ) با فرمت Executable and Linkable تبدیل می کند. این فایل حاوی کد ،dex کد کامپایل شده برای سخت افزار و محیط جاوا / native code و meta-data می باشد.

 

 


راه اندازی Gradle از خط دستور (command line)

می توانید فایل Gradle build خود را از خط دستور اجرا کنید. برای این منظور، دستور زیر را از پوشه ی اصلی پروژه ( main project directory ) اجرا نمایید. لازم است Gradle بر روی دستگاه مربوطه نصب شده باشد و یا کد دربرگیرنده ی(Gradle (Gradle  wrapper gradlew را برای اجرای build بکار ببرید. در صورت لزوم wrapper خود به صورت خودکار سیستم Gradle را دانلود می کند. در زیر لیست taskهای مهم Android Gradle را با شرح کاربرد مشاهده می شود:

 

./gradlew build : پروژه را build و کامپایل نموده و هر را اجرا check وassemble دو تسک می کند.

./gradlew clean build : پروژه را کامل از صفر کامپایل و build می کند.

./gradlew clean build : پروژه را از صفر build و کامپایل می کند.

./gradlew test : تست را اجرا می کند

./gradlew connectedAndroidTest : تست های مبتنی بر instrumentation را اجرا می کند

 

جهت مشاهده ی تمامی taskهای موجود، دستور gradle wrapper را فراخوانی کنید.

gradle build
# alternatively speedup second grandle build by holding it in memory
# gradle build –daemon

با اجرای این دستور، یک پوشه ی build برای قرارگیری خروجی Gradle build ایجاد می شود. به صورت پیش فرض، Gradle build دو فایل با پسوند .apk در پوشه ی build/outputs/apk ایجاد می کند.
به منظور build و راه اندازی تست های نرم افزاری unit test خود بر روی دستگاه مجازی جاوا (JVM) دستور زیر را فراخوانی کنید.

gradle test

حال جهت کامپایل، build و راه اندازی تست های مبتنی بر instrumentation خود بر روی دستگاه واقعی اندروید، دستور زیر را اجرا نمایید.

gradle connectedCheck

 


تعریف dependencyها و اعلان ورژن کتابخانه های لازم خارج از ( closure ( dependencies بدنه ی بستار

یک روش بهینه که استفاده از آن بسیار توصیه می شود، تعریف ورژن نیازمندی های کتابخانه ی خود  (library dependencies) خارج از بدنه ی بستار ( closure ( dependencies می باشد. بدین وسیله نگهداشت و maintenance به غایت آسان تر می شود.

 

ext {
// App dependencies
junitVersion = '4.12'
mockitoVersion = '1.10.19'
powerMockito = '1.6.2'
hamcrestVersion = '1.3'
}
dependencies {
// Dependencies for local unit tests
testCompile "junit:junit:$junitVersion"
testCompile "org.mockito:mockito-all:$mockitoVersion"
testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion"
testCompile "org.powermock:powermock-module-junit4:$powerMockito"
testCompile "org.powermock:powermock-api-mockito:$ext.powerMockito"
}

توجه: پس از قرار دادن بستار ext داخل فایل build اصلی (root) می توانید، برای مثال، با پارامتر $’ ‘rootProject.ext.junitVersion به راحتی به propertyها و خواص آن دسترسی داشته باشید.

 


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

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟