Gradle چیست؟ به چه منظوری طراحی شده است؟

Gradle چیست؟ فرایند ساخت پروژه های اندروید توسط Gradle build system مدیریت می شود . پروژه ی اندروید در دو نوع مختلف عرضه می شوند, اولین مجموعه پروژه از ساختار پروژه ی موروثی (legacy project structure) بهره می گیرد که توسط تجهیزات و ابزار برنامه نویسی اندروید (ADT tooling) Eclipse مورد استفاده قرار می گیرند . این دست از مجموعه پروژه تا سال ۲۰۱۳ مورد استفاده قرار می گرفت . اما مجموعه دوم پروژه از ساختار برنامه سازی Gradle (Gradle Build Structure) بهره می گیرد .


Gradle را می توان گونه ای پیکربندی (config) کرد که از هر دو قالب بندی (format) پشتیبانی کند, به عبارت دیگر هم بتواند از ساختار پروژه ی Gradle استفاده کند و هم از ساختار پروژه ی Eclipse.

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

  • Multi-distribution : زمانی که لازم است برنامه ای برای چندین سرویس گیرنده و شرکت مختلف سفارشی ساخته و تنظیم شود
  • Multi-apk: هنگامی که لازم است چندین برنامه ی کاربردی یا اپلیکیشن مختلف ویژه ی دستگاه های مختلف اندروید طراحی شود و در عین حال برنامه های تولید شده از همان بخش های کد یکسان استفاده کند.

Gradle چیست؟ به چه منظوری طراحی شده است؟

استفاده از Gradle

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

همچنین می توان یک wrapper script ( Wrapper script در واقع همان اسکریپت یا پردازه ی اصلی {master script} است که اجرای دیگر اسکریپت ها را کنترل و اداره می کند) ایجاد شده توسط Gradle را بکاربرد که به برنامه نویس اجازه می دهد یک Gradle Build را بدون نیاز به نصب اضافی از خط فرمان (command line) اجرا کند .(در طول دوره آموزش برنامه نویسی اندروید با راه اندازی و کار با Gradle آشنا می شویم.)

افزودن فایل Gradle ویژه ی پروژه ی اندروید مبتنی بر Eclispe

جهت فعال سازی Gradle build برای پروژه ی اندروید خود که مبتنی بر Eclipse می باشد, build.gradle زیر را به ریشه (root) پروژه ی خود اضافه کنید .


وارد (import) کردن پروژه ی مبتنی بر Eclipse به محیط Android Studio

پس از اینکه یک فایل Gradle معتبر به پروژه ی اندروید مبتنی بر Eclipse خود اضافه کردید, می توانید آن را وارد محیط اندروید استودیو کنید . این کار را می توان از طریق گزینه ی File → Import Project و انتخاب پوشه ی پروژه دربردارنده ی Gradle build file انجام داد .
آن دسته از توسعه دهنده گان و برنامه نویسان شرکت گوگل که مسئول مدیریت و طراحی تجهیزات اندروید را برعهده دارند, این ساختار پروژه اندروید را (در تجهیزات اندروید استودیو) به منظور هماهنگی بیشتر آن با Gradle build system اصلاح کرده اند .به منظور راه اندازی چنین ساختی (build), دستور یا فرمان ذیل را از پوشه ی پروژه ی مربوطه اجرا کنید .

# build project
gradle build
# build project complete from scratch
gradle clean build
# speedup second grandle build by holding it in memory
gradle build --daemon

فرمان فوق خروجی Gradle build را در پوشه ی build ایجاد می کند . به صورت پیش فرض, Gradle build دو فایل .apk در پوشه ی build/outputs/apk بوجود می آورد .جهت ساخت و راه اندازی تست ها دستور زیر را بکار ببرید .

gradle instrumentTest

Gradle build system همچنین این توانایی را دارد که شیوه های مختلف ساخت یک اپلیکیشن را مدیریت کند (یک برنامه ی کاربردی را به شیوه های گوناگون ایجاد کند).در برخی موارد ممکن است لازم باشد برنامه ی مورد نظر را به انواع مختلف تقسیم بندی کنید . گفتنی است کهGradle build قادر است این عملیات را خود انجام دهد .

برای مثال می توانید انواع مختلف از build را ویژه ی رده (category) های مختلف دستگاه های اندروید از جمله گوشی, فبلت و یا تبلت تعریف کرد . مورد استفاده ی دیگری که می توان به آن اشاره کرد نسخه ی رایگان یا پولی اپلیکیشن مربوطه باشد .

تعریف متد productFlavour

با استفاده از متد productFlavour در فایل build.gradle برنامه ی مورد نظر, برنامه نویس قادر خواهد بود انواع مختلفی از برنامه ی تولید شده را ارائه دهد .

productFlavors {
    paid {
        applicationId = &quotcom.exam.gradleexamples.paid&quot
        versionName = &quot1.0-paid&quot
    }
    free {
        applicationId = &quotcom.exam.gradleexamples.free&quot
        versionName = &quot1.0-free&quot
    }
}

کل فایل build.gradle ممکن چیزی شبیه به کد زیر باشد :

apply plugin: 'com.android.application'
  
android {
    compileSdkVersion 22
    buildToolsVersion &quot22.0.1&quot
    defaultConfig {
        applicationId &quotcom.exam.gradleexamples&quot
        minSdkVersion 19
        targetSdkVersion 22
        versionCode 1
        versionName &quot1.0&quot
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        paid {
            applicationId = &quotcom.exam.gradleexamples.paid&quot
            versionName = &quot1.0-paid&quot
        }
  
        free {
            applicationId = &quotcom.exam.gradleexamples.free&quot
            versionName = &quot1.0-free&quot
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    testCompile 'junit:junit:4.+'
}

پس از تعریف flavor (انواع) مختلف برنامه و همگام سازی فایل build.gradle با محیط اندروید استودیو, flavor های مزبور باید در نما (view ) Build Variants پدیدار شوند .

استفاده از productFlavours ها

به منظور تعریف عملکرد یا رفتار متفاوت برای flavor معین, ابتدا لازم است پوشه های مناسب مختص flavor های تعریف شده تحت app/src/ ایجاد کنید .

چنانچه flavor پولی یا رایگان در نمای Build Variants انتخاب گردد مانند نمونه ی فوق فایل strings.xml پروژه / پوشه ی اصلی بازنویسی (override) می شود . بدین وسیله می توان رشته های متفاوت برای انواع پولی و رایگان داشت.

https://codefriend.ir/2020/01/28/gradle-چیست؟-به-چه-منظوری-طراحی-شده-است؟/