अगर आपको Kotlin DSL की मदद से Android बिल्ड कॉन्फ़िगर करने के बारे में पता है, तो इस पेज पर बताया गया है कि Kotlin DSL के सामान्य कॉन्फ़िगरेशन, Lightbuild पर कैसे मैप होते हैं.
इस पेज पर दिए गए उदाहरणों में, Kotlin डीएसएल और Android Gradle प्लगिन (एजीपी) 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") } |
maven का पेमेंट name से किया गया और url के पेमेंट के लिए का इस्तेमाल किया गया |
| रिपॉज़िटरी के क्रेडेंशियल | maven ब्लॉक में credentials |
credentials, जिसमें local.properties में तय की गई कुंजियां शामिल हैं |
| बिल्ड टूल का वर्शन | gradle-wrapper.properties में Gradle वर्शन और plugins ब्लॉक में एजीपी वर्शन |
lightbuild.version |
| Kotlin वर्शन | एजीपी में पहले से मौजूद है. नए वर्शन का इस्तेमाल करने के लिए, kotlin-gradle-plugin को buildscript क्लासपाथ में जोड़ें. |
build.kotlin.version |
| Java वर्शन | kotlin { jvmToolchain(17) } |
build.java.version |
मॉड्यूल टाइप और प्लगिन
Kotlin DSL में, प्लगिन लागू करके मॉड्यूल का टाइप चुना जाता है. साथ ही, केएसपी जैसी सुविधाएं जोड़ने के लिए, अन्य प्लगिन लागू किए जाते हैं. Lightbuild में, मॉड्यूल का type सेट किया जाता है. इसके बाद, Lightbuild आपके कॉन्फ़िगरेशन के लिए ज़रूरी सुविधाएं लागू करता है:
| कॉन्सेप्ट | Kotlin DSL | Lightbuild |
|---|---|---|
| ऐप्लिकेशन मॉड्यूल | id("com.android.application") |
type: application |
| लाइब्रेरी मॉड्यूल | id("com.android.library") |
type: library |
| Kotlin Multiplatform (केएमपी) मॉड्यूल | id("org.jetbrains.kotlin.multiplatform") |
अभी तक समर्थित नहीं है |
| Kotlin | AGP 9.0 और इसके बाद के वर्शन में पहले से मौजूद है | निर्माण का वर्ष |
| केएसपी | 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 |
| कम से कम एसडीके | 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("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("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 |
केएसपी
Kotlin DSL में, केएसपी प्लग इन लागू करें और 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 केएसपी प्लगिन को अपने-आप लागू कर देता है:
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 सीएलआई का इस्तेमाल किया जाता है.
| टास्क | 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 फ़्लैग के साथ बिल्ड चलाकर lockfiles लिखें. Lightbuild में, हर मॉड्यूल में एक resolved.deps फ़ाइल होती है. इसमें मॉड्यूल की रिज़ॉल्व की गई डिपेंडेंसी रिकॉर्ड होती हैं. Lightbuild, इस फ़ाइल को अपने-आप जनरेट करता है. Gradle लॉकफ़ाइलों की तरह, वर्शन कंट्रोल के लिए अपनी resolved.deps फ़ाइलों को चेक इन करें.
अपनी डिपेंडेंसी लॉक करने के लिए, उदाहरण के लिए, सीआई बिल्ड में, lightbuild resolve या lightbuild test में --locked-dependencies फ़्लैग जोड़ें. इस फ़्लैग का इस्तेमाल करने पर, अगर कोई resolved.deps फ़ाइल, मॉड्यूल की डिपेंडेंसी से मेल नहीं खाती है, तो फ़ाइल को अपडेट करने के बजाय कमांड काम नहीं करता:
lightbuild resolve --locked-dependencies
ये सुविधाएं, Google Play Books के साथ काम नहीं करतीं
Lightbuild में Kotlin DSL की ये सुविधाएं काम नहीं करतीं:
- वर्शन कैटलॉग और कन्वेंशन प्लगिन
- कस्टम प्लग इन
- प्रॉडक्ट के फ़्लेवर. इसके बजाय, अपने ऐप्लिकेशन के हर वर्शन के लिए एक अलग ऐप्लिकेशन मॉड्यूल बनाएं. ज़्यादा जानकारी के लिए, एक से ज़्यादा ऐप्लिकेशन मॉड्यूल लेख पढ़ें.
- Kotlin Multiplatform (KMP) मॉड्यूल
- प्रॉक्सी सर्वर के ज़रिए डिपेंडेंसी रिज़ॉल्यूशन
इसके अलावा, किसी प्रोजेक्ट में Kotlin DSL और Lightbuild मॉड्यूल को मिक्स नहीं किया जा सकता. पहले से मौजूद समस्याओं के बारे में जानने के लिए, Lightbuild के रिलीज़ नोट देखें.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर, लिंक टेक्स्ट दिखता है
- Lightbuild कॉन्फ़िगरेशन का रेफ़रंस
- Lightbuild प्रोजेक्ट का स्ट्रक्चर
- Lightbuild का इस्तेमाल शुरू करना