সিঙ্গেল মডিউল এনড্রয়েড অ্যাপে দুটা build.gradle.kts ফাইল থাকে ।

- একেবারে টপ লেভেলে যে  build.gradle.kts ফাইল থাকে তাঁকে প্রজেক্ট গ্রাডেল ফাইল বলে

- app/build.gradle.kts ফাইলকে অ্যাপ মডিউল এর গ্রাডেল ফাইল বলে 

- এছাড়া টপ  লেভেলে settings.gradle.kts ফাইল থাকে 


settings.gradle.kts ফাইল

এই ফাইলে মূলত

- প্লাগিন ম্যানেজমেন্ট মানে প্লাগিন এর রিপোজিটরি বলে দেয়া হয় 

- ডিপেন্ডেন্সি ম্যানেজমেন্ট মানে  ডিপেন্ডেন্সি এর রিপোজিটরি বলে দেয়া হয়   এবং

- প্রজেক্ট এর নাম এবং সব মডিউলকে এখানে ইনক্লুড করা হয় 

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } }

rootProject.name = "Memory App" include(":app")



টপ লেভেল  build.gradle.kts ফাইল

এই ফাইলে কিছু প্লাগিন ডিক্লার করা হয় তবে মূলত তাদেরকে অকার্যকর অবস্থায় রাখা হয় এবং মডিউল build.gradle.kts গিয়ে তাদেরকে একটিভ করা হয়

plugins {
id("com.android.application") version "8.2.2" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
id("com.google.dagger.hilt.android") version "2.50" apply false
}


মডিউল  build.gradle.kts ফাইলক

এটা হলো মোস্ট ইমপোর্টেন্ট build.gradle.kts ফাইল। এই ফাইলের টপ লেভেলে মূলত তিনটা জিনিষ থাকে আরো বেশি জিনিষ থাকতে পারে 

plugins {  }

android { }

dependencies { }


plugins

plugin এর ভিতর মূলত প্লাগিন এর ডিকারেশন থাকে 

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("dagger.hilt.android.plugin")
kotlin("kapt")
}


android

এর ভিতর মূলত এনড্রয়েড স্পেসিফিক সেটিং থাকে। যেমন অ্যাপ এর এপ্লিকেশন আইডি, মিনিমাম SDK, টার্গেট SDK, Kotlin ভার্সন,  কম্পাইল অপশন ইত্যাদি। 

android {
namespace = "com.marufh.memory"
compileSdk = 34

defaultConfig {
    applicationId = "com.marufh.memory"
    minSdk = 26
    targetSdk = 34
    versionCode = 1
    versionName = "1.0"

    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    vectorDrawables {
        useSupportLibrary = true
    }
}

buildTypes {       
    release {
        isMinifyEnabled = false
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
}
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
    jvmTarget = "17"
}
buildFeatures {
    compose = true
}
composeOptions {
    kotlinCompilerExtensionVersion = "1.5.10"
}
packaging {
    resources {
        excludes += "/META-INF/{AL2.0,LGPL2.1}"
    }
}

}



dependencies

এর ভিতর মূলত অ্যাপ এর ডিপেন্ডেন্সি এর তালিকা থাকে 

dependencies {

implementation(platform("androidx.compose:compose-bom:2024.03.00"))
implementation("androidx.core:core-ktx:1.12.0")

// Livecycle
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.activity:activity-compose:1.8.2")

// Compose UI
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
implementation("androidx.navigation:navigation-compose:2.7.7")

// Coil async image loading
implementation("io.coil-kt:coil-compose:2.6.0")

// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
implementation("com.google.code.gson:gson:2.10")

// DataStore
implementation("androidx.datastore:datastore-preferences:1.0.0")

// Hilt
kapt("com.google.dagger:hilt-compiler:2.50")
implementation("com.google.dagger:hilt-android:2.50")
implementation("androidx.hilt:hilt-navigation-compose:1.2.0")


// Chip text field
implementation("io.github.dokar3:chiptextfield-m3:0.6.5")

}


এর বাইরে যেহেতু kapt প্লাগিন ব্যবহার করেছি, তাই এর একটা একটা সেটিং বলে দিতে হবে 

kapt {
correctErrorTypes = true
}

Share