Gradle file
সিঙ্গেল মডিউল এনড্রয়েড অ্যাপে দুটা 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 }