Kotlin DSL-এর মাধ্যমে Android বিল্ড কনফিগার করার ব্যাপারে আপনি পরিচিত হলে, এই পৃষ্ঠা দেখায় যে কীভাবে সাধারণ Kotlin DSL কনফিগারেশন Lightbuild-এ ম্যাপ করে।
এই পৃষ্ঠার উদাহরণগুলি Kotlin DSL এবং Android Gradle প্লাগ-ইন (AGP) 9.0 বা তার পরবর্তী ভার্সন ব্যবহার করে, যার মধ্যে বিল্ট-ইন Kotlin সহায়তা অন্তর্ভুক্ত।
ফাইল তৈরি করুন
নিম্নলিখিত সারণীতে প্রতিটি Kotlin DSL বিল্ড ফাইলের সমতুল্য Lightbuild দেখানো হয়েছে:
| Kotlin DSL | Lightbuild | উদ্দেশ্য |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
প্রোজেক্টের নাম, মডিউল ও রিপোজিটরি |
build.gradle.kts ও gradle-wrapper.properties রুট |
project.lightbuild.yaml |
বিল্ড টুল ও টুলচেন ভার্সন |
মডিউল build.gradle.kts |
মডিউল lightbuild.yaml |
মডিউলের ধরন, Android সেটিংস, ডিপেন্ডেন্সি ও টেস্ট |
gradle.lockfile |
resolved.deps |
ডিপেন্ডেন্সি ভার্সন ট্র্যাক করা |
প্রোজেক্ট সেটিংস
Kotlin DSL-এ, settings.gradle.kts ফাইলটি প্রোজেক্টের নাম, এর মডিউল এবং ডিপেন্ডেন্সি সমাধান করার জন্য রিপোজিটরিগুলি সংজ্ঞায়িত করে:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
Lightbuild-এ, project.lightbuild.yaml ফাইল একই সেটিংস নির্ধারণ করে:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
নিচের সারণীতে প্রোজেক্ট-ব্যাপী সেটিংসের তুলনা করা হয়েছে:
| ধারণা | Kotlin DSL | Lightbuild |
|---|---|---|
| প্রোজেক্টের নাম | rootProject.name |
project.name |
| মডিউল | include(":app") |
modules |
| রিপোজিটরি | dependencyResolutionManagement-এ repositories |
repositories |
| কাস্টম Maven রিপোজিটরি | maven { url = uri("https://maven.example.com/releases") } |
name দিয়ে maven এবং url |
| রিপোজিটরি ক্রেডেনশিয়াল | maven ব্লকে credentials |
local.properties-এ আপনার উল্লেখ করা কী সহ credentials |
| বিল্ড টুল ভার্সন | gradle-wrapper.properties-এ Gradle ভার্সন এবং plugins ব্লকে AGP ভার্সন |
lightbuild.version |
| Kotlin ভার্সন | AGP-তে বিল্ট-ইন। নতুন ভার্সন ব্যবহার করতে, buildscript ক্লাসপাথে kotlin-gradle-plugin যোগ করুন। |
build.kotlin.version |
| Java ভার্সন | kotlin { jvmToolchain(17) } |
build.java.version |
মডিউলের ধরন ও প্লাগ-ইন
Kotlin DSL-এ, আপনি প্লাগ-ইন প্রয়োগ করে কোনও মডিউলের ধরন বেছে নেন এবং KSP-এর মতো ফিচার যোগ করতে
অন্যান্য প্লাগ-ইন প্রয়োগ করেন। Lightbuild-এ, আপনি মডিউলের
type সেট করেন এবং আপনার কনফিগারেশনের জন্য প্রয়োজনীয় ফিচার Lightbuild প্রয়োগ করে:
| ধারণা | Kotlin DSL | Lightbuild |
|---|---|---|
| অ্যাপ মডিউল | id("com.android.application") |
type: application |
| লাইব্রেরি মডিউল | id("com.android.library") |
type: library |
| Kotlin Multiplatform (KMP) মডিউল | id("org.jetbrains.kotlin.multiplatform") |
এখনও কাজ করে না |
| Kotlin | AGP 9.0 এবং তার পরবর্তী ভার্সনে বিল্ট-ইন হিসেবে থাকে | বিল্ট-ইন |
| KSP | id("com.google.devtools.ksp") |
আপনি kspProcessors ঘোষণা করলে অটোমেটিক প্রয়োগ করা হয় |
| প্রোটোকল বাফার | id("com.google.protobuf") |
optionalFeatures-এ com.android.tools.lightbuild.protobuf |
| ভার্সন ক্যাটালগ | libs.versions.tomlটি ফাইল |
এখনও কাজ করে না |
| অন্যান্য প্লাগ-ইন | Gradle প্লাগ-ইন প্রয়োগ করুন | এখনও কাজ করে না |
Android সেটিংস
Kotlin DSL-এ, আপনি মডিউলের build.gradle.kts ফাইলের android ব্লকে Android সেটিংস কনফিগার করেন:
plugins {
id("com.android.application")
}
android {
namespace = "com.example.myapp.app"
compileSdk = 36
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
}
Lightbuild-এ, আপনি মডিউলের lightbuild.yaml ফাইলের android ব্লকে একই সেটিংস কনফিগার করেন:
platform: android
type: application
android:
namespace: com.example.myapp.app
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
applicationId: com.example.myapp
versionCode: 1
versionName: "1.0"
নিচের সারণীতে এই সেটিংসের তুলনা করা হয়েছে:
| সেটিং | Kotlin DSL | Lightbuild |
|---|---|---|
| নেমস্পেস | namespace |
namespace |
| SDK কম্পাইল করুন | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| ন্যূনতম SDK | defaultConfig-এ minSdk = 24 |
minSdk.version.release.apiLevel: 24 |
| টার্গেট SDK | defaultConfig-এ targetSdk = 36 |
targetSdk.version.release.apiLevel: 36 |
| আবেদনের আইডি | defaultConfig-এ applicationId |
applicationId |
| সংস্করণ কোড | defaultConfig-এ versionCode |
versionCode |
| সংস্করণের নাম | defaultConfig-এ versionName |
versionName |
| সাঙ্কেতিক ভাষা ব্যবহার করা বন্ধ করুন | signingConfigs এবং signingConfig release বিল্ড টাইপে |
packaging.release.signing |
ডিপেন্ডেন্সি
Kotlin DSL-এ, আপনি dependencies ব্লকে ডিপেন্ডেন্সি ঘোষণা করেন,
implementation-এর মতো কনফিগারেশন ব্যবহার করে:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
Lightbuild-এ, আপনি module-এর অধীনে মডিউল ডিপেন্ডেন্সি এবং maven-এর অধীনে এক্সটার্নাল
লাইব্রেরি তালিকাভুক্ত করেন:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL অন্যান্য কনফিগারেশন ব্যবহার করে, যেমন api, compileOnly, এবং
runtimeOnly, যাতে কোনও মডিউল কীভাবে ডিপেন্ডেন্সি ব্যবহার করে তা নিয়ন্ত্রণ করা যায়:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
Lightbuild-এ, আপনি ডিপেন্ডেন্সিতে compile এবং runtime সেটিংস যোগ করেন
পরিবর্তে:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
এইসব সেটিংস সম্পর্কে আরও তথ্য পেতে, ডিপেন্ডেন্সি সেটিংস দেখুন।
নিম্নলিখিত সারণীতে সাধারণ ডিপেন্ডেন্সি ডিক্লারেশনের তুলনা করা হয়েছে:
| ডিপেনডেন্সি | Kotlin DSL | Lightbuild |
|---|---|---|
| আপনার প্রোজেক্টে মডিউল | implementation(project(":app-core")) |
android.dependencies.module-এ //app-core |
| এক্সটার্নাল লাইব্রেরি | implementation("group:artifact:version") |
android.dependencies.maven-এ group:artifact:version |
| API ডিপেন্ডেন্সি | api("group:artifact:version") |
android.dependencies.maven-এ group:artifact:version, compile: public-এর সাথে |
| শুধুমাত্র কম্পাইল ডিপেন্ডেন্সি | compileOnly("group:artifact:version") |
android.dependencies.maven-এ group:artifact:version, runtime: off-এর সাথে |
| শুধুমাত্র রানটাইম ডিপেনডেন্সি | runtimeOnly("group:artifact:version") |
android.dependencies.maven-এ group:artifact:version, compile: off-এর সাথে |
| KSP প্রসেসর | ksp("group:artifact:version") |
android.kspProcessors.maven-এ group:artifact:version |
| লোকাল টেস্ট ডিপেন্ডেন্সি | testImplementation("group:artifact:version") |
android.tests.test.dependencies.maven-এ group:artifact:version |
| ইন্সট্রুমেন্টেড টেস্ট ডিপেনডেন্সি | androidTestImplementation("group:artifact:version") |
android.tests.androidTest.dependencies.maven-এ group:artifact:version |
KSP
Kotlin DSL-এ, আপনি KSP প্লাগ-ইন প্রয়োগ করেন এবং ksp
কনফিগারেশনের মাধ্যমে প্রসেসর যোগ করেন:
plugins {
id("com.android.library")
id("com.google.devtools.ksp")
}
dependencies {
implementation("com.squareup.moshi:moshi:1.15.2")
implementation("com.squareup.moshi:moshi-kotlin:1.15.2")
ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.2")
}
Lightbuild-এ, আপনি kspProcessors ব্লকে প্রসেসর যোগ করেন এবং Lightbuild
অটোমেটিক KSP প্লাগ-ইন প্রয়োগ করে:
type: library
android:
dependencies:
maven:
- com.squareup.moshi:moshi:1.15.2
- com.squareup.moshi:moshi-kotlin:1.15.2
kspProcessors:
maven:
- com.squareup.moshi:moshi-kotlin-codegen:1.15.2
পরীক্ষা
Kotlin DSL-এ, আপনি defaultConfig-এ ইন্সট্রুমেন্টেশন টেস্ট রানার সেট করেন এবং
আপনি testImplementation এবং
androidTestImplementation কনফিগারেশনের সাথে টেস্ট ডিপেন্ডেন্সি যোগ করেন:
android {
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
}
dependencies {
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
}
Lightbuild-এ, আপনি tests.test-এ লোকাল টেস্ট এবং tests.androidTest-এ ইনস্ট্রুমেন্টেড টেস্ট
কনফিগার করেন:
android:
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test.ext:junit:1.3.0
- androidx.test.espresso:espresso-core:3.7.0
কমান্ড তৈরি করুন
Kotlin DSL-এর মাধ্যমে, আপনি Gradle র্যাপারের সাহায্যে Gradle টাস্ক রান করে কমান্ড লাইন থেকে তৈরি ও টেস্ট করতে পারবেন। Lightbuild-এর মাধ্যমে, আপনি Lightbuild CLI ব্যবহার করেন।
| টাস্ক | Gradle র্যাপার | Lightbuild CLI |
|---|---|---|
| অ্যাপ মডিউল বিল্ড করা | ./gradlew :app:assembleDebug |
lightbuild build app |
| সব টার্গেট তৈরি করুন | ./gradlew assemble |
lightbuild build |
| মডিউলের লোকাল টেস্ট রান করুন | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| মডিউলের ইনস্ট্রুমেন্টেড টেস্ট রান করুন | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| সব টেস্ট রান করুন | ./gradlew test connectedAndroidTest |
lightbuild test |
| বিল্ড আউটপুট ও ক্যাশে সরান | ./gradlew clean |
lightbuild clean |
আরও তথ্যের জন্য, কমান্ড লাইন থেকে আপনার অ্যাপ তৈরি করুন এবং কমান্ড লাইন থেকে Lightbuild প্রোজেক্ট তৈরি করুন দেখুন।
ডিপেন্ডেন্সি লকিং
Kotlin DSL-এর ক্ষেত্রে, ডিপেন্ডেন্সি লকিং ঐচ্ছিক:
আপনি এটি আপনার বিল্ড স্ক্রিপ্টে চালু করেন এবং তারপরে --write-locks ফ্ল্যাগ সহ একটি বিল্ড রান করে লকফাইল লেখেন। Lightbuild-এ, প্রতিটি মডিউলে একটি
resolved.deps ফাইল থাকে যা মডিউলের সমাধান করা ডিপেন্ডেন্সি রেকর্ড করে, যা
Lightbuild অটোমেটিক তৈরি করে। Gradle লকফাইলের মতো, ভার্সন কন্ট্রোলে আপনার
resolved.deps ফাইল চেক-ইন করুন।
আপনার ডিপেন্ডেন্সি লক করতে, যেমন CI বিল্ডে, lightbuild resolve বা lightbuild test-এ
--locked-dependencies ফ্ল্যাগ যোগ করুন। এই
ফ্ল্যাগ ব্যবহার করলে, resolved.deps ফাইল মডিউলের ডিপেন্ডেন্সির সাথে ম্যাচ না করলে, ফাইল আপডেট করার পরিবর্তে কমান্ড কাজ করে না:
lightbuild resolve --locked-dependencies
কাজ করে না এমন ফিচার
Lightbuild-এ নিম্নলিখিত Kotlin DSL ফিচার কাজ করে না:
- ভার্সন ক্যাটালগ ও কনভেনশন প্লাগ-ইন
- কাস্টম প্লাগ-ইন
- প্রোডাক্টের ফ্লেভার। পরিবর্তে, আপনার অ্যাপের প্রতিটি ভার্সনের জন্য আলাদা অ্যাপ মডিউল তৈরি করুন। আরও তথ্যের জন্য, একাধিক অ্যাপ মডিউল দেখুন।
- Kotlin Multiplatform (KMP) মডিউল
- প্রক্সি সার্ভারের মাধ্যমে ডিপেন্ডেন্সি রেজোলিউশন
এছাড়াও, কোনও প্রোজেক্টে Kotlin DSL এবং Lightbuild মডিউল একসাথে ব্যবহার করা যাবে না। পরিচিত সমস্যার জন্য, Lightbuild রিলিজ নোট দেখুন।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- Lightbuild কনফিগারেশন রেফারেন্স
- Lightbuild প্রোজেক্ট স্ট্রাকচার
- Lightbuild ব্যবহার শুরু করা