Lightbuild प्रोजेक्ट के बिल्ड कॉन्फ़िगरेशन में, YAML फ़ाइलें शामिल होती हैं: प्रोजेक्ट की रूट डायरेक्ट्री में मौजूद project.lightbuild.yaml फ़ाइल और हर मॉड्यूल में मौजूद lightbuild.yaml फ़ाइल. इस पेज पर, हर फ़ाइल की सेटिंग के बारे में बताया गया है.
प्रोजेक्ट फ़ाइल
ग्लोबल प्रोजेक्ट सेटिंग, आपके प्रोजेक्ट की रूट डायरेक्ट्री में मौजूद project.lightbuild.yaml फ़ाइल में होती हैं. उदाहरण के लिए:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
lightbuild:
version: 0.0.30
build:
java:
version: 17
kotlin:
version: 2.3.20
jvmTarget: "17"
यहां दी गई टेबल में, इन सेटिंग के बारे में बताया गया है:
| सेटिंग | ब्यौरा |
|---|---|
project.name |
प्रोजेक्ट का नाम, जैसे कि MyApp. Android Studio, इस नाम को प्रोजेक्ट विंडो के रूट के तौर पर दिखाता है. Kotlin DSL में rootProject.name की तरह, यह आपके ऐप्लिकेशन के नाम और ऐप्लिकेशन आईडी से अलग होता है. |
modules |
प्रोजेक्ट में मौजूद मॉड्यूल, जैसे कि ऐप्लिकेशन मॉड्यूल (app) और लाइब्रेरी मॉड्यूल (app-core). |
repositories |
वे रिमोट रिपॉज़िटरी जिनसे Lightbuild, डिपेंडेंसी रिज़ॉल्व करता है. ज़्यादा जानकारी के लिए, डेटा स्टोर करने की जगहें देखें. |
lightbuild.version |
Lightbuild का वह वर्शन जिसका इस्तेमाल प्रोजेक्ट करता है. |
build.kotlin.version |
प्रोजेक्ट में इस्तेमाल किया जा रहा Kotlin का वर्शन. |
build.java.version |
प्रोजेक्ट के लिए ज़रूरी Java कंपाइलर वर्शन. |
build.jvmTarget |
जनरेट किए गए जेवीएम बाइट कोड का टारगेट वर्शन. |
डेटा स्टोर करने की जगह
repositories का इस्तेमाल करके, उन रिपॉज़िटरी की सूची बनाएं जिनसे Lightbuild डिपेंडेंसी को रिज़ॉल्व करता है. आपके पास पहले से मौजूद google और mavenCentral रिपॉज़िटरी को लिस्ट करने का विकल्प होता है. साथ ही, maven का इस्तेमाल करके, कस्टम Maven रिपॉज़िटरी जोड़ी जा सकती हैं:
repositories:
- google
- mavenCentral
- maven:
name: "Example Repo"
url: "https://maven.example.com/releases"
maven रिपॉज़िटरी में ये सेटिंग होती हैं:
| सेटिंग | ब्यौरा |
|---|---|
name |
डेटाबेस का नाम. |
url |
डेटा स्टोर करने की जगह का यूआरएल. |
credentials |
ज़रूरी नहीं. आपकी local.properties फ़ाइल में मौजूद वे कुंजियां जो रिपॉज़िटरी के उपयोगकर्ता नाम और पासवर्ड से मैप होती हैं. ज़्यादा जानकारी के लिए, डेटा स्टोर करने की जगह के क्रेडेंशियल देखें. |
रिपॉज़िटरी के क्रेडेंशियल
अगर किसी Maven रिपॉज़िटरी के लिए उपयोगकर्ता नाम और पासवर्ड की ज़रूरत है, तो रिपॉज़िटरी में credentials ब्लॉक जोड़ें. username और password वैल्यू, क्रेडेंशियल नहीं हैं. ये ऐसी कुंजियां हैं जिन्हें अपने प्रोजेक्ट की local.properties फ़ाइल में तय किया जाता है:
repositories:
- google
- mavenCentral
- maven:
name: "Internal Repo"
url: "https://maven.example.com/releases"
credentials:
username: internalRepoUser
password: internalRepoPassword
इसके बाद, अपने प्रोजेक्ट की local.properties फ़ाइल में, हर पासकोड को उसकी वैल्यू के साथ मैप करें.
REPO_USERNAME और REPO_PASSWORD को अपने क्रेडेंशियल से बदलें:
# Also define sdk.dir, the path to your Android SDK.
internalRepoUser=REPO_USERNAME
internalRepoPassword=REPO_PASSWORD
मॉड्यूल फ़ाइलें
हर मॉड्यूल की डायरेक्ट्री में एक lightbuild.yaml फ़ाइल होती है, जो मॉड्यूल की सेटिंग तय करती है. नीचे दी गई टेबल में, टॉप-लेवल की सेटिंग के बारे में बताया गया है:
| सेटिंग | ब्यौरा |
|---|---|
platform |
वह प्लैटफ़ॉर्म जिसे मॉड्यूल टारगेट करता है: android. |
type |
मॉड्यूल का टाइप: ऐप्लिकेशन मॉड्यूल के लिए application या लाइब्रेरी मॉड्यूल के लिए library. ज़्यादा जानकारी के लिए, Lightbuild प्रोजेक्ट का स्ट्रक्चर देखें. |
optionalFeatures |
मॉड्यूल के लिए चालू की जाने वाली वैकल्पिक सुविधाएं, जैसे कि प्रोटोकॉल बफ़र के लिए com.android.tools.lightbuild.protobuf. ज़्यादा जानकारी के लिए, प्रोटोकॉल बफ़र देखें. |
android |
मॉड्यूल की Android सेटिंग. ज़्यादा जानकारी के लिए, Android सेटिंग देखें. |
Android सेटिंग
android ब्लॉक में, मॉड्यूल की Android बिल्ड सेटिंग होती हैं:
| सेटिंग | ब्यौरा |
|---|---|
namespace |
मॉड्यूल का नेमस्पेस. ज़्यादा जानकारी के लिए, नेमस्पेस सेट करना लेख पढ़ें. |
compileSdk |
वह एपीआई लेवल जिसके लिए मॉड्यूल को कंपाइल किया गया है. ज़्यादा जानकारी के लिए, SDK टूल के वर्शन देखें. |
minSdk |
वह कम से कम एपीआई लेवल जिस पर मॉड्यूल काम करता है. |
targetSdk |
वह एपीआई लेवल जिसे ऐप्लिकेशन टारगेट करता है. यह सिर्फ़ ऐप्लिकेशन मॉड्यूल में काम करता है. |
applicationId |
ऐप्लिकेशन का ऐप्लिकेशन आईडी. ऐप्लिकेशन मॉड्यूल में सेट करें. |
versionCode |
ऐप्लिकेशन के वर्शन का कोड. ऐप्लिकेशन मॉड्यूल में सेट करें. |
versionName |
ऐप्लिकेशन के वर्शन का नाम. ऐप्लिकेशन मॉड्यूल में सेट करें. |
packaging |
ऐप्लिकेशन के debug और release बिल्ड को पैकेज करने की सेटिंग. जैसे, रिलीज़ साइनिंग. यह सिर्फ़ ऐप्लिकेशन मॉड्यूल में काम करता है. ज़्यादा जानकारी के लिए, पैकेजिंग देखें. |
dependencies |
अन्य मॉड्यूल और बाहरी लाइब्रेरी पर मॉड्यूल की डिपेंडेंसी. ज़्यादा जानकारी के लिए, डिपेंडेंसी देखें. |
kspProcessors |
मॉड्यूल के लिए कोड जनरेट करने वाले केएसपी प्रोसेसर. ज़्यादा जानकारी के लिए, केएसपी प्रोसेसर देखें. |
tests |
मॉड्यूल के लोकल और इंस्ट्रुमेंटेड टेस्ट. ज़्यादा जानकारी के लिए, टेस्ट देखें. |
SDK टूल के वर्शन
version.release.apiLevel में, compileSdk, minSdk, और targetSdk सेटिंग को एपीआई लेवल के तौर पर तय करें. उदाहरण के लिए, यहां दी गई सेटिंग, मॉड्यूल को एपीआई लेवल 36 के हिसाब से कंपाइल करती हैं. साथ ही, एपीआई लेवल 24 और इसके बाद के वर्शन के साथ काम करती हैं और एपीआई लेवल 36 को टारगेट करती हैं:
android:
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
सिर्फ़ ऐप्लिकेशन मॉड्यूल में targetSdk सेटिंग काम करती है. लाइब्रेरी मॉड्यूल सिर्फ़ compileSdk और minSdk सेटिंग तय करते हैं.
डिपेंडेंसी
dependencies ब्लॉक में, मॉड्यूल की डिपेंडेंसी के बारे में बताएं:
module: आपके प्रोजेक्ट में मौजूद अन्य मॉड्यूल. इन्हें//के बाद मॉड्यूल का नाम लिखकर दिखाया जाता है. उदाहरण के लिए,//app-coreया//features/search.maven: बाहरी लाइब्रेरी, जिन्हेंgroup:artifact:versionफ़ॉर्मैट में Maven कोऑर्डिनेट के तौर पर लिखा गया है.
उदाहरण के लिए, यहां दी गई सेटिंग, app-core मॉड्यूल और AndroidX Core KTX लाइब्रेरी पर डिपेंडेंसी जोड़ती हैं:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
डिपेंडेंसी सेटिंग
डिफ़ॉल्ट रूप से, कोई मॉड्यूल अपनी हर डिपेंडेंसी के साथ कंपाइल होता है और उन्हें रनटाइम के दौरान शामिल करता है. हालांकि, वह उन्हें उन मॉड्यूल के लिए उपलब्ध नहीं कराता जो उस पर निर्भर होते हैं. कोई मॉड्यूल किसी डिपेंडेंसी का इस्तेमाल कैसे करता है, इसमें बदलाव करने के लिए, डिपेंडेंसी के बाद कोलन जोड़ें. इसके बाद, उसके नीचे compile सेटिंग, runtime सेटिंग या दोनों जोड़ें:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.core:core-ktx:1.18.0
- androidx.annotation:annotation:1.9.1:
runtime: off
इस उदाहरण में, इस मॉड्यूल पर निर्भर मॉड्यूल भी data मॉड्यूल की क्लास का इस्तेमाल कर सकते हैं. Jetpack एनोटेशन लाइब्रेरी का इस्तेमाल, सिर्फ़ इस मॉड्यूल को कंपाइल करने के लिए किया जाता है. Core KTX, डिफ़ॉल्ट सेटिंग का इस्तेमाल करता है.
compile सेटिंग से यह कंट्रोल किया जाता है कि कौनसे मॉड्यूल, डिपेंडेंसी के हिसाब से कंपाइल होंगे:
private(डिफ़ॉल्ट): यह मॉड्यूल, डिपेंडेंसी के हिसाब से कंपाइल होता है. हालांकि, इस मॉड्यूल पर निर्भर मॉड्यूल कंपाइल नहीं होते.public: यह मॉड्यूल और इस पर निर्भर मॉड्यूल, डिपेंडेंसी के हिसाब से कंपाइल होते हैं.publicका इस्तेमाल तब करें, जब आपके मॉड्यूल का सार्वजनिक एपीआई, डिपेंडेंसी के टाइप का इस्तेमाल करता हो.off: यह मॉड्यूल, डिपेंडेंसी के हिसाब से कंपाइल नहीं होता.
runtime सेटिंग से यह कंट्रोल किया जाता है कि डिपेंडेंसी, रनटाइम के दौरान उपलब्ध है या नहीं:
public(डिफ़ॉल्ट): डिपेंडेंसी, रनटाइम के दौरान इस मॉड्यूल और इस पर निर्भर मॉड्यूल के लिए उपलब्ध होती है.off: डिपेंडेंसी, रनटाइम के दौरान उपलब्ध नहीं है. ऐसी डिपेंडेंसी के लिएoffका इस्तेमाल करें जिनकी ज़रूरत आपके कोड को सिर्फ़ कंपाइल के समय होती है. जैसे, एनोटेशन.
compile और runtime, दोनों off नहीं हो सकते. टेस्ट डिपेंडेंसी में, compile सिर्फ़ private या off हो सकता है.
यह देखने के लिए कि ये सेटिंग, Kotlin डीएसएल कॉन्फ़िगरेशन, जैसे कि api और compileOnly से कैसे मेल खाती हैं, Lightbuild की तुलना Kotlin डीएसएल से करें लेख पढ़ें.
केएसपी प्रोसेसर
Moshi या Room जैसे Kotlin सिंबल प्रोसेसिंग (केएसपी) पर आधारित कोड जनरेटर का इस्तेमाल करने के लिए, प्रोसेसर को kspProcessors ब्लॉक में जोड़ें. साथ ही, रनटाइम के दौरान आपके कोड में इस्तेमाल होने वाली लाइब्रेरी को dependencies ब्लॉक में जोड़ें. Lightbuild, केएसपी प्लग इन को अपने-आप लागू करता है. साथ ही, बिल्ड के दौरान कोड जनरेशन को कॉन्फ़िगर करता है.
उदाहरण के लिए, यहां दी गई सेटिंग, Moshi को उसके केएसपी कोड जनरेटर के साथ कॉन्फ़िगर करती हैं:
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
प्रोटोकॉल बफ़र
लाइब्रेरी मॉड्यूल में प्रोटोकॉल बफ़र (.proto) फ़ाइलों से कोड जनरेट करने के लिए, मॉड्यूल की optionalFeatures सूची में प्रोटोकॉल बफ़र की सुविधा जोड़ें. साथ ही, मॉड्यूल की डिपेंडेंसी में प्रोटोकॉल बफ़र की रनटाइम लाइब्रेरी जोड़ें. optionalFeatures, टॉप-लेवल की सेटिंग है. यह android ब्लॉक के बाहर मौजूद होती है:
optionalFeatures:
- com.android.tools.lightbuild.protobuf
android:
dependencies:
maven:
- com.google.protobuf:protobuf-javalite:4.28.2
- com.google.protobuf:protobuf-kotlin-lite:4.28.2
मॉड्यूल की .proto फ़ाइलों को उसकी src/main/proto डायरेक्ट्री में डालें. मॉड्यूल बनाते समय, Lightbuild प्रोटोकॉल बफ़र लाइट रनटाइम के लिए Java और Kotlin क्लास जनरेट करता है. Android के लिए इसका सुझाव दिया जाता है.
टेस्ट अपडेट
tests ब्लॉक में, किसी मॉड्यूल के टेस्ट कॉन्फ़िगर करें:
test: लोकल टेस्ट, जो आपकी डेवलपमेंट मशीन के जेवीएम पर चलते हैं.dependenciesमें टेस्ट की डिपेंडेंसी की सूची बनाएं.androidTest: डिवाइस या एम्युलेटर पर चलने वाले इंस्ट्रुमेंटेड टेस्ट.runnerको टेस्ट रनर क्लास पर सेट करें औरdependenciesमें टेस्ट की डिपेंडेंसी की सूची बनाएं.
उदाहरण के लिए:
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
पैकेजिंग
ऐप्लिकेशन मॉड्यूल में, ऐप्लिकेशन के debug और release बिल्ड को कॉन्फ़िगर करने के लिए, packaging ब्लॉक का इस्तेमाल करें. रिलीज़ के लिए तैयार बिल्ड को अपने पासकोड से साइन करने के लिए, release प्रोफ़ाइल में signing ब्लॉक जोड़ें:
android:
packaging:
release:
signing:
storeFile: "${RELEASE_STORE_FILE}"
storePassword: "${RELEASE_STORE_PASSWORD}"
keyAlias: "${RELEASE_KEY_ALIAS}"
keyPassword: "${RELEASE_KEY_PASSWORD}"
signing ब्लॉक में ये सेटिंग इस्तेमाल की जा सकती हैं:
storeFile: कीस्टोर फ़ाइल का पाथ, मॉड्यूल की डायरेक्ट्री के हिसाब से होना चाहिए या आपकी होम डायरेक्ट्री में मौजूद किसी जगह के लिए,~/से शुरू होना चाहिए.storePassword: कीस्टोर का पासवर्ड.keyAlias: कीस्टोर में साइनिंग पासकोड का दूसरा नाम.keyPassword: साइनिंग पासकोड का पासवर्ड.
अपने पासवर्ड को प्रोजेक्ट की फ़ाइलों से बाहर रखने के लिए, इन वैल्यू को ${NAME} सिंटैक्स वाले एनवायरमेंट वैरिएबल रेफ़रंस पर सेट करें, जैसा कि उदाहरण में दिखाया गया है.
storeFile और keyAlias को सीधे तौर पर लिखा जा सकता है. इसके अलावा, उनके लिए एनवायरमेंट वैरिएबल का रेफ़रंस भी दिया जा सकता है. बिल्ड करने पर, Lightbuild हर रेफ़रंस को एनवायरमेंट वैरिएबल की वैल्यू से बदल देता है. हर वैल्यू में सिर्फ़ रेफ़रंस होना चाहिए: Lightbuild, किसी ऐसी वैल्यू के हिस्से के तौर पर मौजूद रेफ़रंस को नहीं बदलता जो लंबी हो. जैसे, ${HOME}/upload-keystore.jks.
उदाहरण
यहां दिए गए उदाहरणों में, ऐप्लिकेशन मॉड्यूल और लाइब्रेरी मॉड्यूल के लिए पूरी मॉड्यूल फ़ाइलें दिखाई गई हैं.
ऐप्लिकेशन मॉड्यूल
यहां दी गई app/lightbuild.yaml फ़ाइल, ऐसे ऐप्लिकेशन मॉड्यूल को कॉन्फ़िगर करती है जो app-core लाइब्रेरी मॉड्यूल पर निर्भर करता है:
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"
dependencies:
module:
- //app-core
लाइब्रेरी मॉड्यूल
यहां दी गई app-core/lightbuild.yaml फ़ाइल, एक लाइब्रेरी मॉड्यूल को कॉन्फ़िगर करती है. यह मॉड्यूल, Jetpack Compose और Moshi का इस्तेमाल करता है. साथ ही, इसमें लोकल और इंस्ट्रुमेंटेड टेस्ट शामिल होते हैं:
platform: android
type: library
android:
namespace: com.example.myapp
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
dependencies:
maven:
- androidx.core:core-ktx:1.18.0
- androidx.lifecycle:lifecycle-runtime-ktx:2.10.0
- androidx.activity:activity-compose:1.13.0
- androidx.lifecycle:lifecycle-runtime-compose:2.10.0
- androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0
- androidx.compose.ui:ui:1.10.4
- androidx.compose.ui:ui-tooling-preview:1.10.4
- androidx.compose.material3:material3:1.4.0
- androidx.navigation3:navigation3-ui:1.0.1
- androidx.navigation3:navigation3-runtime:1.0.1
- androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0
- androidx.compose.ui:ui-tooling:1.10.4
- androidx.compose.ui:ui-test-manifest:1.10.4
- 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
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test:core:1.7.0
- androidx.test.ext:junit:1.3.0
- androidx.test:runner:1.7.0
- androidx.test.espresso:espresso-core:3.7.0
- androidx.compose.ui:ui-test-junit4:1.10.4
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर, लिंक टेक्स्ट दिखता है
- Lightbuild प्रोजेक्ट का स्ट्रक्चर
- कमांड लाइन से Lightbuild प्रोजेक्ट बनाना
- Lightbuild और Kotlin DSL की तुलना करना