App Distribution Gradle प्लग इन का इस्तेमाल करके, App Distribution को Android की बिल्ड प्रोसेस में इंटिग्रेट किया जा सकता है. प्लग इन की मदद से, अपने ऐप्लिकेशन की Gradle फ़ाइल में टेस्टर और रिलीज़ नोट तय किए जा सकते हैं. इससे, अपने ऐप्लिकेशन के अलग-अलग बिल्ड टाइप और वैरिएंट के लिए डिस्ट्रिब्यूशन को कॉन्फ़िगर किया जा सकता है.
इस गाइड में, App Distribution Gradle प्लग इन का इस्तेमाल करके, टेस्टर को Android ऐप्लिकेशन बंडल (AAB) उपलब्ध कराने का तरीका बताया गया है.
App Distribution, Google Play की संगठन में काम करने वालों के साथ ऐप्लिकेशन शेयर करने की सुविधा के साथ इंटिग्रेट होता है. इससे, आपके अपलोड किए गए एएबी को प्रोसेस किया जाता है और ऐसे APK उपलब्ध कराए जाते हैं जो आपके टेस्टर के डिवाइस कॉन्फ़िगरेशन के हिसाब से ऑप्टिमाइज़ किए गए हों. AABs को डिस्ट्रिब्यूट करने पर, ये काम किए जा सकते हैं:
ऑप्टिमाइज़ किए गए ऐसे APKs चलाएं जो आपके टेस्टर के डिवाइसों के लिए ऑप्टिमाइज़ किए गए हों. ये APKs, Google Play उपलब्ध कराता है.
डिवाइस से जुड़ी समस्याओं का पता लगाएं और उन्हें डीबग करें.
ऐप्लिकेशन बंडल की सुविधाओं को टेस्ट करें. जैसे, Play Feature Delivery और Play ऐसेट डिलीवरी.
टेस्टर के लिए, डाउनलोड किए जाने वाले डेटा का साइज़ कम करना.
ज़रूरी अनुमतियां
App Distribution पर AAB अपलोड करने के लिए, आपको अपने Firebase ऐप्लिकेशन को Google Play में मौजूद किसी ऐप्लिकेशन से लिंक करना होगा. इन कार्रवाइयों को करने के लिए, आपके पास ज़रूरी लेवल का ऐक्सेस होना चाहिए.
अगर आपके पास Firebase का ज़रूरी ऐक्सेस नहीं है, तो Firebase प्रोजेक्ट के मालिक से कहें कि वह Firebase कंसोल IAM सेटिंग का इस्तेमाल करके, आपको ज़रूरी भूमिका असाइन करे. अगर आपको अपने Firebase प्रोजेक्ट को ऐक्सेस करने के बारे में कुछ पूछना है, तो "Firebase प्रोजेक्ट की अनुमतियों और ऐक्सेस" के बारे में अक्सर पूछे जाने वाले सवाल देखें. इसमें, प्रोजेक्ट के मालिक को ढूंढने या असाइन करने के बारे में भी जानकारी दी गई है.
यहां दी गई टेबल, Firebase ऐप्लिकेशन को Google Play में मौजूद किसी ऐप्लिकेशन से लिंक करने और एएबी अपलोड करने पर लागू होती है.
| Firebase कंसोल में कार्रवाई | IAM से जुड़ी ज़रूरी अनुमति | IAM की ऐसी भूमिकाएं जिनमें ज़रूरी अनुमतियां डिफ़ॉल्ट रूप से शामिल होती हैं | ज़रूरी अन्य भूमिकाएं |
|---|---|---|---|
| Firebase ऐप्लिकेशन को Google Play में मौजूद किसी ऐप्लिकेशन से लिंक करना | firebase.playLinks.update
|
इनमें से कोई एक भूमिका: | Google Play डेवलपर खाते का ऐक्सेस एडमिन के तौर पर |
| App Distribution पर एएबी अपलोड करें | firebaseappdistro.releases.update
|
इनमें से कोई एक भूमिका: | –– |
शुरू करने से पहले
अगर आपने पहले से ही A/B टेस्टिंग नहीं बनाई है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें. इस वर्कफ़्लो के आखिर में, आपके Firebase प्रोजेक्ट में एक Firebase Android ऐप्लिकेशन होगा.
अगर आपको Firebase के किसी अन्य प्रॉडक्ट का इस्तेमाल नहीं करना है, तो आपको सिर्फ़ एक प्रोजेक्ट बनाना होगा और अपना ऐप्लिकेशन रजिस्टर करना होगा. अगर आपको अन्य प्रॉडक्ट इस्तेमाल करने हैं, तो अपने Android प्रोजेक्ट में Firebase जोड़ें में दिए गए सभी चरणों को पूरा करें.
Firebase कंसोल का App Distribution पेज खोलें. जब आपसे कहा जाए, तब अपना Firebase प्रोजेक्ट चुनें. इसके बाद, ऐप्लिकेशन स्विचर का इस्तेमाल करके अपना ऐप्लिकेशन चुनें और शुरू करें पर क्लिक करें.
Google Play से Firebase लिंक बनाने और AABs अपलोड करने के लिए, पक्का करें कि आपका ऐप्लिकेशन इन ज़रूरी शर्तों को पूरा करता हो:
Google Play में मौजूद ऐप्लिकेशन और Firebase Android ऐप्लिकेशन, दोनों को पैकेज के एक ही नाम का इस्तेमाल करके रजिस्टर किया गया हो.
Google Play पर मौजूद ऐप्लिकेशन को ऐप्लिकेशन के डैशबोर्ड पर सेट अप किया गया हो और Google Play के किसी एक ट्रैक (इंटरनल टेस्टिंग, क्लोज़्ड टेस्टिंग, ओपन टेस्टिंग या प्रोडक्शन) पर डिस्ट्रिब्यूट किया गया हो.
Google Play पर ऐप्लिकेशन की समीक्षा पूरी हो गई है और ऐप्लिकेशन पब्लिश हो गया है. अगर ऐप्लिकेशन की स्थिति कॉलम में इनमें से कोई एक स्थिति दिखती है, तो इसका मतलब है कि आपका ऐप्लिकेशन पब्लिश हो गया है: इंटरनल टेस्टिंग (ड्राफ़्ट की इंटरनल टेस्टिंग नहीं), क्लोज़्ड टेस्टिंग, ओपन टेस्टिंग या प्रोडक्शन.
Firebase में बने Android ऐप्लिकेशन को अपने Google Play डेवलपर खाते से लिंक करना:
Firebase कंसोल में,
प्रोजेक्ट सेटिंग पर जाएं. इसके बाद, इंटिग्रेशन टैब को चुनें.Google Play कार्ड पर जाकर, जोड़ें पर क्लिक करें.
अगर आपने पहले से ही Google Play से लिंक किया हुआ है, तो मैनेज करें पर क्लिक करें.App Distribution इंटिग्रेशन को चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. इसके बाद, चुनें कि आपको Firebase के किन Android ऐप्लिकेशन को Google Play से लिंक करना है.
Google Play से लिंक करने के बारे में ज़्यादा जानें.
पहला चरण. अपना Android प्रोजेक्ट सेट अप करना
अपनी रूट-लेवल (प्रोजेक्ट-लेवल) Gradle फ़ाइल (
<project>/build.gradle.ktsया<project>/build.gradle) में, App Distribution Gradle प्लगिन को डिपेंडेंसी के तौर पर जोड़ें:Kotlin
plugins { // ... id("com.android.application") version "7.3.0" apply false // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.5.0" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.3.1" apply false }
Groovy
plugins { // ... id 'com.android.application' version '7.3.0' apply false // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.5.0' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.3.1' apply false }
अपनी मॉड्यूल (ऐप्लिकेशन-लेवल) Gradle फ़ाइल (आम तौर पर,
<project>/<app-module>/build.gradle.ktsया<project>/<app-module>/build.gradle) में, App Distribution Gradle प्लगिन जोड़ें:Kotlin
plugins { id("com.android.application") // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the App Distribution Gradle plugin id("com.google.firebase.appdistribution") }
Groovy
plugins { id 'com.android.application' // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' }
अगर आप किसी कॉर्पोरेट प्रॉक्सी या फ़ायरवॉल का इस्तेमाल कर रहे हैं, तो यहां दी गई Java सिस्टम प्रॉपर्टी जोड़ें. इससे App Distribution को Firebase पर आपके डिस्ट्रिब्यूशन अपलोड करने की अनुमति मिलती है:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
दूसरा चरण. Firebase की मदद से पुष्टि करना
Gradle प्लग इन का इस्तेमाल करने से पहले, आपको इनमें से किसी एक तरीके से अपने Firebase प्रोजेक्ट की पुष्टि करनी होगी. अगर पुष्टि करने के किसी अन्य तरीके का इस्तेमाल नहीं किया जाता है, तो Gradle प्लग इन, डिफ़ॉल्ट रूप से Firebase सीएलआई से क्रेडेंशियल खोजता है.
चरण 3. डिस्ट्रिब्यूशन प्रॉपर्टी कॉन्फ़िगर करना
अपनी मॉड्यूल (ऐप्लिकेशन-लेवल) Gradle फ़ाइल (आम तौर पर, <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, कम से कम एक firebaseAppDistribution सेक्शन जोड़कर App Distribution को कॉन्फ़िगर करें.
उदाहरण के लिए, release बिल्ड को टेस्टर के साथ शेयर करने के लिए, इन निर्देशों का पालन करें::
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Groovy
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
बिल्ड टाइप और ऐप्लिकेशन टाइप के लिए, App Distribution को कॉन्फ़िगर किया जा सकता है.
उदाहरण के लिए, debug और release बिल्ड को "डेमो" और "फ़ुल" ऐप्लिकेशन टाइप में डिस्ट्रिब्यूट करने के लिए, इन निर्देशों का पालन करें:
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("debug") {...} getByName("release") {...} } flavorDimensions += "version" productFlavors { create("demo") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for demo version" testers = "demo@testers.com" } } create("full") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for full version" testers = "full@testers.com" } } } // ... }
Groovy
android { // ... buildTypes { debug {...} release {...} } flavorDimensions "version" productFlavors { demo { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for demo version" testers="demo@testers.com" } } full { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for full version" testers="full@testers.com" } } } // ... }
डिस्ट्रिब्यूशन को कॉन्फ़िगर करने के लिए, इन पैरामीटर का इस्तेमाल करें:
| App Distribution बिल्ड पैरामीटर | |
|---|---|
appId
|
आपके ऐप्लिकेशन का Firebase ऐप्लिकेशन आईडी. यह सिर्फ़ तब ज़रूरी है, जब आपके पास Google Services Gradle प्लगिन इंस्टॉल न हो. ऐप्लिकेशन आईडी, appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
आपके सेवा खाते की निजी कुंजी वाली JSON फ़ाइल का पाथ. यह सिर्फ़ तब ज़रूरी है, जब सेवा खाते की पुष्टि करने की सुविधा का इस्तेमाल किया जा रहा हो. |
artifactType
|
इससे आपके ऐप्लिकेशन के फ़ाइल टाइप के बारे में पता चलता है. इसे |
artifactPath
|
आपको जिस APK या एएबी फ़ाइल को अपलोड करना है उसका ऐब्सलूट पाथ. |
releaseNotes या releaseNotesFile |
इस बिल्ड के लिए रिलीज़ नोट. रिलीज़ नोट को सीधे तौर पर या सादे टेक्स्ट वाली फ़ाइल के पाथ के तौर पर बताया जा सकता है. |
testers या testersFile |
उन टेस्टर के ईमेल पते जिन्हें आपको बिल्ड उपलब्ध कराने हैं. टेस्टर के तौर पर, ईमेल पतों की कॉमा लगाकर अलग की गई सूची दी जा सकती है: testers="ali@example.com, bri@example.com, cal@example.com" इसके अलावा, कॉमा लगाकर अलग किए गए ईमेल पतों की सूची वाली फ़ाइल का पाथ भी दिया जा सकता है: testersFile="/path/to/testers.txt" |
groups या groupsFile |
टेस्टर के वे ग्रुप जिन्हें आपको बिल्ड उपलब्ध कराने हैं (टेस्टर मैनेज करें देखें).
ग्रुप की जानकारी देने के लिए, ग्रुप के उपनामों को कॉमा लगाकर अलग की गई सूची के तौर पर, ग्रुप की जानकारी दी जा सकती है: groups="qa-team, android-testers" इसके अलावा, उस फ़ाइल का पाथ भी दिया जा सकता है जिसमें ग्रुप के उपनामों की कॉमा लगाकर अलग की गई सूची मौजूद हो: groupsFile="/path/to/tester-groups.txt" |
testDevices या testDevicesFile |
वे टेस्ट डिवाइस जिन पर आपको ऐप्लिकेशन टेस्टिंग एजेंट से टेस्ट कराने हैं. टेस्ट डिवाइसों की जानकारी को सेमीकोलन से अलग की गई सूची के तौर पर दिया जा सकता है: testDevices="model=shiba,version=34,locale=en,orientation=portrait" इसके अलावा, उस फ़ाइल का पाथ भी दिया जा सकता है जिसमें डिवाइस की खास जानकारी की सूची, सेमीकोलन से अलग की गई हो: testDevicesFile="/path/to/testDevices.txt" |
testUsername |
ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट करने के दौरान, अपने-आप लॉगिन होने के लिए उपयोगकर्ता नाम. |
testPassword या testPasswordFile |
ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट करने के दौरान, अपने-आप लॉगिन होने की सुविधा के लिए इस्तेमाल किया जाने वाला पासवर्ड. इसके अलावा, पासवर्ड वाली सादे टेक्स्ट की फ़ाइल का पाथ भी दिया जा सकता है: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource |
उपयोगकर्ता नाम वाले फ़ील्ड के लिए संसाधन का नाम, ताकि ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट के दौरान अपने-आप लॉगिन होने की सुविधा का इस्तेमाल किया जा सके. |
testPasswordResource |
ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट करने के दौरान, अपने-आप लॉगिन होने के लिए पासवर्ड फ़ील्ड के रिसॉर्स का नाम. |
testNonBlocking |
अगर ऐप्लिकेशन टेस्टिंग एजेंट टेस्ट चलाते समय इसे सेट किया जाता है, तो कमांड टेस्ट शुरू कर देगा. इसके बाद, टेस्ट पूरा होने का इंतज़ार करने के बजाय, तुरंत वापस आ जाएगा. टेस्ट के नतीजे देखने के लिए, Firebase कंसोल पर जाएं. अगर यह फ़्लैग सेट नहीं है, तो टेस्ट पूरे होने तक कमांड ब्लॉक रहेगा. साथ ही, अगर कोई टेस्ट फ़ेल होता है, तो यह फ़ेलियर कोड के साथ बंद हो जाएगा. |
resultsBucket
|
Google Cloud Storage (GCS) की कस्टम बकेट, जहां टेस्ट के नतीजे सेव किए जाते हैं. इस फ़ील्ड को खाली छोड़ने पर, डिफ़ॉल्ट बकेट का इस्तेमाल किया जाता है. बकेट का मालिकाना हक, बिलिंग की सुविधा वाले प्रोजेक्ट के पास होना चाहिए. साथ ही, बकेट की जानकारी देने पर, इस्तेमाल किए गए स्टोरेज के लिए बिलिंग शुल्क देना होगा. |
stacktrace
|
यह उपयोगकर्ता के अपवादों के लिए स्टैकट्रेस को प्रिंट करता है. इससे समस्याओं को डीबग करने में मदद मिलती है. |
चौथा चरण. टेस्टर के साथ अपना ऐप्लिकेशन शेयर करना
आखिर में, अपने टेस्ट ऐप्लिकेशन को पैकेज करने और टेस्टर को न्योता देने के लिए, अपने प्रोजेक्ट के Gradle रैपर की मदद से, टारगेट
BUILD-VARIANTऔरappDistributionUploadBUILD-VARIANTबनाएं. यहां BUILD-VARIANT, ऐप्लिकेशन टाइप और बिल्ड टाइप का वैकल्पिक विकल्प है, जिसे आपने पिछले चरण में कॉन्फ़िगर किया था. ऐप्लिकेशन टाइप के बारे में ज़्यादा जानकारी के लिए, बिल्ड के वैरिएंट कॉन्फ़िगर करना लेख पढ़ें.उदाहरण के लिए,
releaseबिल्ड वैरिएंट का इस्तेमाल करके अपना ऐप्लिकेशन डिस्ट्रिब्यूट करने के लिए, यह कमांड चलाएं:./gradlew bundleRelease appDistributionUploadRelease
इसके अलावा, अगर आपने Google खाते से पुष्टि की है और अपनी Gradle बिल्ड फ़ाइल में क्रेडेंशियल नहीं दिए हैं, तो
FIREBASE_TOKENवैरिएबल शामिल करें:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
--<property-name>=<property-value>के तौर पर कमांड लाइन आर्ग्युमेंट पास करके,build.gradleफ़ाइल में सेट की गई वैल्यू को बदला भी जा सकता है. उदाहरण के लिए:App Distribution पर डीबग के लिए बिल्ड अपलोड करने के लिए:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"अपने Firebase प्रोजेक्ट में और टेस्टर जोड़ने या मौजूदा टेस्टर हटाने के लिए:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"टेस्टर को Firebase प्रोजेक्ट में जोड़ने के बाद, उसे अलग-अलग रिलीज़ में जोड़ा जा सकता है. हटाए गए टेस्टर के पास आपके प्रोजेक्ट की रिलीज़ का ऐक्सेस नहीं रहेगा. हालांकि, कुछ समय के लिए उनके पास आपकी रिलीज़ का ऐक्सेस बना रह सकता है.
--emailsके बजाय--file="/path/to/testers.txt"का इस्तेमाल करके भी, टेस्टर की जानकारी दी जा सकती है.appDistributionAddTestersऔरappDistributionRemoveTestersटास्क, इन आर्ग्युमेंट को भी स्वीकार करते हैं:projectNumber: आपके Firebase प्रोजेक्ट का नंबर.serviceCredentialsFile: Google सेवा के क्रेडेंशियल वाली फ़ाइल का पाथ. यह वही आर्ग्युमेंट है जिसका इस्तेमाल अपलोड करने की कार्रवाई के लिए किया जाता है.
रिलीज़ अपलोड होने के बाद, Gradle प्लग इन ये लिंक दिखाता है. इन लिंक की मदद से, बाइनरी को मैनेज किया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि टेस्टर और अन्य डेवलपर के पास सही रिलीज़ हो:
firebase_console_uri- Firebase कंसोल का लिंक, जो एक रिलीज़ दिखाता है. इस लिंक को अपने संगठन के अन्य डेवलपर के साथ शेयर किया जा सकता है.testing_uri- टेस्टर के अनुभव में रिलीज़ का लिंक (पहले से मौजूद Android ऐप्लिकेशन), जिससे टेस्टर रिलीज़ नोट देख सकते हैं और अपने डिवाइस पर ऐप्लिकेशन इंस्टॉल कर सकते हैं. लिंक का इस्तेमाल करने के लिए, टेस्टर के पास रिलीज़ का ऐक्सेस होना चाहिए.binary_download_uri- हस्ताक्षर किया गया एक लिंक, जो ऐप्लिकेशन बाइनरी (APK या AAB फ़ाइल) को सीधे डाउनलोड और इंस्टॉल करता है. लिंक की समयसीमा एक घंटे के बाद खत्म हो जाती है.
बिल्ड को डिस्ट्रिब्यूट करने के बाद, वह Firebase console के App Distribution डैशबोर्ड पर 150 दिनों (पांच महीने) तक उपलब्ध रहता है. जब बिल्ड की समयसीमा खत्म होने में 30 दिन बचे हों, तो Console और टेस्टर के टेस्ट डिवाइस पर मौजूद बिल्ड की सूची, दोनों में समयसीमा खत्म होने की सूचना दिखती है.
जिन टेस्टर को ऐप्लिकेशन की टेस्टिंग के लिए न्योता नहीं भेजा गया है उन्हें टेस्टिंग शुरू करने के लिए ईमेल से न्योते भेजे जाते हैं. साथ ही, मौजूदा टेस्टर को ईमेल से सूचनाएं भेजी जाती हैं कि टेस्टिंग के लिए एक नया बिल्ड तैयार है. टेस्ट ऐप्लिकेशन इंस्टॉल करने के तरीके के बारे में जानने के लिए, टेस्टर सेट अप करने की गाइड पढ़ें. Firebase कंसोल में, हर टेस्टर की स्थिति पर नज़र रखी जा सकती है. जैसे, उन्होंने न्योता स्वीकार किया है या नहीं और ऐप्लिकेशन डाउनलोड किया है या नहीं.
टेस्टर के पास, ऐप्लिकेशन को टेस्ट करने का न्योता स्वीकार करने के लिए 30 दिन होते हैं. इसके बाद, न्योते की समयसीमा खत्म हो जाती है. न्योते की समयसीमा खत्म होने से पांच दिन पहले, Firebase कंसोल में टेस्टर के नाम के बगल में, समयसीमा खत्म होने की सूचना दिखती है. टेस्टर की लाइन में मौजूद ड्रॉप-डाउन मेन्यू का इस्तेमाल करके, न्योते को फिर से भेजा जा सकता है.
अगले चरण
ऐप्लिकेशन में सुझाव/राय देने की सुविधा लागू करें, ताकि टेस्टर आपके ऐप्लिकेशन के बारे में सुझाव/राय दे सकें. इसमें स्क्रीनशॉट भी शामिल हैं.
जब आपके ऐप्लिकेशन के नए बिल्ड इंस्टॉल करने के लिए उपलब्ध हों, तब टेस्टर को इन-ऐप्लिकेशन सूचनाएं दिखाने का तरीका जानें.
Android ऐप्लिकेशन बंडल कोडलैब पर जाएं. यहां आपको ऐप्लिकेशन बंडल की रिलीज़ को सिलसिलेवार तरीके से उपलब्ध कराने का तरीका जानने को मिलेगा.
सीआई/सीडी का इस्तेमाल करके, क्यूए टेस्टर को Android ऐप्लिकेशन उपलब्ध कराने के सबसे सही तरीके जानें.