گریدل (Gradle) پروژه اندرویدی خود را مدیریت کنید !

دی 23, 1397     زهرا حسینی    

گریدل (Gradle) پروژه اندرویدی خود را مدیریت کنید !

Dependency های گریدل (Gradle)  خود را به نحوی مناسب حفظ کنید.

همه ی ما در زمان توسعه یک برنامه اندرویدی به نوشتن کدی تمیز فکر می کنیم. اما آیا تا به حال به این که چطور گریدل برنامه اندرویدی خود را به روشی تمیز و هوشمندانه مدیریت کنید، فکر کرده اید ؟!

اخیراً با مشارکت در برنامه های اندرویدی، دیده شده است که توسعه دهندگان مدل های معماری مختلفی مانند MVVM و MVP را برای نوشتن کدهای تمیز دنیال می کنند اما فقط در بعضی از این پروژه ها تمرکز یا زمان خود را به مدیریت گریدل پروژه اختصاص می دهند .

و اما اینکه چطور این کار را انجام دهیم !

در این مقاله قصد داریم روی چگونگی مدیریت گریدل پروژه خود به نحوی مناسب و هوشمندانه تمرکز کنیم .

فرض کنید در حال حاضر یک پروژه اندرویدی تعریف کردیم  و در قسمت build.gradle ، Dependency های زیر را داریم :

dependencies }

    implementation fileTree(dir: ‘libs’, include: [‘*.jar’])

    implementation “org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version”

    implementation ‘com.android.support:appcompat-v7:28.0.0-rc01’

    implementation ‘com.android.support.constraint:constraint-layout:1.1.2’

    testImplementation ‘junit:junit:4.12’

    androidTestImplementation ‘com.android.support.test:runner:1.0.2’

    androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’

    implementation ‘com.google.firebase:firebase-core:16.0.0’

    implementation ‘com.google.firebase:firebase-auth:16.0.3’

    implementation ‘com.google.firebase:firebase-storage:16.0.1’

    implementation ‘com.google.firebase:firebase-database:16.0.1’

    implementation ‘de.hdodenhof:circleimageview:2.2.0’

   …

{

مراحل زیر را دنبال کنید :

مرحله اول : یک{..}  ext در build.gradle به صورت زیر ایجاد کنید :

} ext

{

مرحله دوم : تمام متغیرهای مورد نیاز را در {..}  ex به صورت زیر مقداردهی کنید :

ext {    compileSdkVersion = 28    targetSdkVersion = 28    minSdkVersion = 19    supportLibVer = ‘28.0.0’    constraintLayoutVer = ‘1.1.2’    jUnitVer = ‘4.12’    testRunnerVer = ‘1.0.2’    espressoCoreVer = ‘3.0.2’    firebaseVer = ‘16.0.4’    circleImageViewVer = ‘2.2.0’    xwrayGroupieVer = ‘2.1.0’    picassoVer = ‘2.71828’    wangAviVer = ‘2.1.3’    glideVer = ‘4.8.0’  …    }

در اینجا متغیرهایی شامل نسخه های SDK ، نسخه های کتابخانه ها و… را از Dependency های گریدل خود اضافه کردیم.

مرحله سوم : در این مرحله یک آرایه  در {..}  ex به صورت زیر ایجاد کنید که شامل Dependency های پروژه باشد  :

}ext

  commonDependency = [            kotlin          : “org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}”,            supportLib      : “com.android.support:appcompat-v7:${supportLibVer}”,            designSupportLib: “com.android.support:design:${supportLibVer}”,            recyclerView    : “com.android.support:recyclerview-v7:${supportLibVer}”,            constraintLayout: “com.android.support.constraint:constraint-layout:${constraintLayoutVer}”,            jUnit           : “junit:junit:${jUnitVer}”,            testRunner      : “com.android.support.test:runner:${testRunnerVer}”,            espressoCore    : “com.android.support.test.espresso:espresso-core:${espressoCoreVer}”,            circleimageview : “de.hdodenhof:circleimageview:${circleImageViewVer}”,            xwrayGroupie    : “com.xwray:groupie:${xwrayGroupieVer}”,            picasso         : “com.squareup.picasso:picasso:${picassoVer}”,            wangAvi         : “com.wang.avi:library:${wangAviVer}”,            glide           : “com.github.bumptech.glide:glide:${glideVer}”,            glideCompiler   : “com.github.bumptech.glide:compiler:${glideVer}”,     ]    // We have added “firebaseDependency” array to make grouping of firebase dependencies      firebaseDependency = [            firebaseCore    : “com.google.firebase:firebase-core:${firebaseVer}”,            firebaseAuth    : “com.google.firebase:firebase-auth:${firebaseVer}”,            firebaseStorage : “com.google.firebase:firebase-storage:${firebaseVer}”,            firebaseDatabase: “com.google.firebase:firebase-database:${firebaseVer}”,     ]}

بدین ترتیب commonDependency را ایجاد کرده و تمامی Dependency های خود را با نسخه های مربوطه و نام متغیر دسترسی به آن اضافه کردیم.

در حال حاضر Dependency های ما قابل استفاده در build.gradle است و بدین صورت می توانید از آنها در اپلیکیشن خود استفاده کنید

مرحله چهارم : اکنون در build.gradle برنامه برای استفاده از Dependency ها، نیاز به دسترسی به ext ایجاد شده در بالا داریم :

def config = rootProject.extensions.getByName(“ext”) // Create variable to access “ext”android { ….}

مرحله پنجم : در این مرحله می توانیم به تمام اعضای آرایه ی ext ، با استفاده از متغیر confiq ایجاد شده دسترسی پیدا کنیم .
در زیر نحوه دسترسی به minSdkVersion و targetSdkVersionبرای مقداردهی نسخه های sdk با استفاده از config نشان داده شده است :

def config = rootProject.extensions.getByName(“ext”) // Create variable to access “ext” membersandroid {    compileSdkVersion config[“compileSdkVersion”] // access “ext” members using variable “config”    defaultConfig {        applicationId “com.pranay.managegradledemo”        minSdkVersion config[“minSdkVersion”]        targetSdkVersion config[“targetSdkVersion”]        ….            }        … }

مرحله ششم : در مرحله آخر  Dependency ها را در بخش Dependencies مانند زیر مقداردهی کنید :

def config = rootProject.extensions.getByName(“ext”) // Create variable to access “ext” membersandroid {   …dependencies {    implementation fileTree(dir: ‘libs’, include: [‘*.jar’])    //Access dependencies     implementation config.commonDependency.kotlin    implementation config.commonDependency.supportLib    implementation config.commonDependency.designSupportLib    implementation config.commonDependency.constraintLayout     testImplementation config.commonDependency.jUnit    androidTestImplementation config.commonDependency.testRunner    androidTestImplementation config.commonDependency.espressoCore      //Firebase dependency    implementation config.firebaseDependency.firebaseCore    implementation config.firebaseDependency.firebaseAuth    implementation config.firebaseDependency.firebaseStorage    implementation config.firebaseDependency.firebaseDatabase     implementation config.commonDependency.circleimageview    implementation config.commonDependency.recyclerView    implementation config.commonDependency.xwrayGroupie    implementation config.commonDependency.picasso    implementation config.commonDependency.wangAvi    implementation config.commonDependency.glide    annotationProcessor config.commonDependency.glideCompiler   } }

با استفاده از متغیر config  می توانید به آرایه های commonAdependency و firebaseDependency دسترسی پیدا کنید.

به همین راحتی ! حالا پروژه ی خود را همگام سازی (Sync) کنید و لذت ببرید.

شاد و پیروز باشید 🙂

 

 

دسته‌بندی‌ : بلاگ

دیدگاهتان را بنویسید

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

Rating*