Android में Gradle त्रुटि: No signature of method: build_*.android() — इसे कैसे ठीक करें?

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

क्या आपने "No signature of method: build_*.android()" देखा है? आप अकेले नहीं हैं

\n

यदि आपने कभी Android Studio खोला, build.gradle.kts फ़ाइल में बदलाव किए और बदले में एक रहस्यमयी लाल त्रुटि ERROR: No signature of method: build_ap86oam3dut3pxce3x49rdtma.android() प्राप्त की — तो क्लब में आपका स्वागत है। Gradle की यह समस्या Stack Overflow पर सबसे लोकप्रिय में से एक है (हज़ारों बार देखी गई!), और यह एक अनुभवी डेवलपर को भी परेशान कर सकती है।

\n

अच्छी खबर: इस त्रुटि का लगभग हमेशा एक ही कारण होता है और यह कुछ ही मिनटों में ठीक हो जाती है। इस लेख में, हम Kotlin DSL (अर्थात build.gradle.kts) के उदाहरण के साथ इसका विश्लेषण करेंगे, दिखाएंगे कि यह क्यों होती है, और इसे ठीक करने की चरण-दर-चरण योजना देंगे। चलिए शुरू करते हैं!

\n\n

वास्तव में इस त्रुटि का क्या अर्थ है?

\n

Gradle एक बिल्ड सिस्टम है जो build.gradle (Groovy) या build.gradle.kts (Kotlin) स्क्रिप्ट को पढ़ता है। जब आप No signature of method: build_*.android() देखते हैं, तो इसका मतलब है कि Gradle रूट प्रोजेक्ट के संदर्भ में android { ... } फ़ंक्शन नहीं ढूंढ पा रहा है।

\n

सीधे शब्दों में कहें तो: आप एक ऐसी स्क्रिप्ट में Android-विशिष्ट पैरामीटर (compileSdk, buildTypes, defaultConfig) कॉन्फ़िगर करने का प्रयास कर रहे हैं जो कोई एप्लिकेशन या लाइब्रेरी मॉड्यूल नहीं है। आमतौर पर यह रूट build.gradle.kts में होता है, जहाँ केवल सभी प्रोजेक्ट्स के लिए सेटिंग्स (प्लगइन्स, रिपॉजिटरी) होनी चाहिए, न कि Android कॉन्फ़िगरेशन।

\n\n

सामान्य स्थिति (Kotlin DSL पर उदाहरण)

\n

कल्पना करें कि आप रूट फ़ाइल build.gradle.kts खोलते हैं और कुछ इस तरह लिखते हैं:

\n
// ❌ रूट build.gradle.kts में गलत कोड\nandroid {\n    compileSdk = 34\n    defaultConfig {\n        minSdk = 24\n    }\n}\n
\n

Gradle सिंक्रोनाइज़ेशन के बाद वही त्रुटि दिखाई देती है। क्यों? क्योंकि रूट स्क्रिप्ट Android के बारे में नहीं जानती — यह सामान्य कॉन्फ़िगरेशन के लिए जिम्मेदार है, न कि किसी विशिष्ट मॉड्यूल के लिए।

\n\n

त्रुटि को ठीक करने के चरण

\n

आइए समझते हैं कि Kotlin प्रोजेक्ट में बिल्ड फ़ाइलों को सही तरीके से कैसे संरचित किया जाए। कुल दो चरण हैं।

\n\n

चरण 1: जाँचें कि आप कौन सी फ़ाइल संपादित कर रहे हैं

\n

Android Studio में Project पैनल खोलें (आमतौर पर बाईं ओर)। दो फ़ाइलें खोजें:

\n
    \n
  • build.gradle.kts (रूट, प्रोजेक्ट के रूट में स्थित)
  • \n
  • app/build.gradle.kts (मॉड्यूल app की फ़ाइल)
  • \n
\n

त्रुटि तब होती है जब आप गलती से android { ... } ब्लॉक को रूट फ़ाइल में रख देते हैं। सुनिश्चित करें कि आप app/build.gradle.kts के साथ काम कर रहे हैं।

\n\n

चरण 2: कोड को सही फ़ाइल में ले जाएँ (यदि आवश्यक हो)

\n

यदि आपको रूट build.gradle.kts में android ब्लॉक मिलता है — तो उसे काटकर app/build.gradle.kts में पेस्ट करें। मॉड्यूल app के लिए सही संस्करण इस प्रकार दिखना चाहिए:

\n\n
// ✅ सही app/build.gradle.kts\nplugins {\n    id("com.android.application")\n    id("org.jetbrains.kotlin.android")\n}\n\nandroid {\n    namespace = "com.example.myapp"\n    compileSdk = 34\n\n    defaultConfig {\n        applicationId = "com.example.myapp"\n        minSdk = 24\n        targetSdk = 34\n        versionCode = 1\n        versionName = "1.0"\n    }\n\n    buildTypes {\n        release {\n            isMinifyEnabled = false\n            proguardFiles(\n                getDefaultProguardFile("proguard-android-optimize.txt"),\n                "proguard-rules.pro"\n            )\n        }\n    }\n\n    compileOptions {\n        sourceCompatibility = JavaVersion.VERSION_1_8\n        targetCompatibility = JavaVersion.VERSION_1_8\n    }\n\n    kotlinOptions {\n        jvmTarget = "1.8"\n    }\n}\n\ndependencies {\n    implementation("androidx.core:core-ktx:1.12.0")\n    implementation("androidx.appcompat:appcompat:1.6.1")\n    // ... शेष निर्भरताएँ\n}\n
\n\n

और रूट build.gra

ब्लॉग

पुस्तक अनुशंसाएँ