परिचय: आपके प्रोजेक्ट में "जुड़वाँ" समस्या
\n\nएक स्थिति की कल्पना करें: आप Android के लिए Kotlin में कोड लिख रहे हैं, सब कुछ बढ़िया चल रहा है। आप एक नई लाइब्रेरी जोड़ते हैं, बिल्ड चलाते हैं — और Gradle एक लाल एरर दिखाता है: «Duplicate class»। परिचित लग रहा है? यदि आपने कभी Android डेवलपमेंट किया है, तो आपने यह संदेश ज़रूर देखा होगा। Stack Overflow पर इस सवाल के हज़ारों व्यूज़ हैं, और यह कोई आश्चर्य की बात नहीं है — यह एरर एक अनुभवी डेवलपर को भी परेशान कर सकता है।
\n\nइस लेख में, हम जानेंगे कि Kotlin Android में Duplicate class क्या है, यह क्यों होता है, और सबसे महत्वपूर्ण बात — इसे हमेशा के लिए कैसे ठीक करें। आप 5 सबसे सामान्य कारणों को जानेंगे, तैयार समाधान प्राप्त करेंगे, और डिपेंडेंसी कॉन्फ्लिक्ट को रोकना सीखेंगे। चलिए शुरू करते हैं!
\n\nDuplicate class क्या है और ऐसा क्यों होता है?
\n\nDuplicate class एरर तब होता है जब बिल्ड सिस्टम (Gradle) एक ही पूर्ण नाम (FQN — Fully Qualified Name) वाले दो या अधिक समान क्लास ढूंढ लेता है। Android की दुनिया में, इसका आमतौर पर मतलब है कि एक ही क्लास आपके प्रोजेक्ट की अलग-अलग लाइब्रेरी या मॉड्यूल में मौजूद है।
कल्पना करें कि आपने दो एक जैसी किताबें ऑर्डर कीं, लेकिन अलग-अलग प्रकाशकों से। वे एक ही शेल्फ पर रखी हैं — और लाइब्रेरियन को नहीं पता कि कौन सी लेनी है। Gradle के साथ भी ऐसा ही है: वह तय नहीं कर पाता कि डुप्लिकेट क्लास में से किसका उपयोग करे।
\n\nKotlin के लिए यह विशेष रूप से प्रासंगिक क्यों है? Kotlin सक्रिय रूप से अपनी स्टैंडर्ड लाइब्रेरी (kotlin-stdlib) का उपयोग करता है, जो अन्य स्रोतों से उसी के संस्करणों के साथ संघर्ष कर सकती है। इसमें AndroidX, Google लाइब्रेरी, Firebase जोड़ें — और आपके पास एक विस्फोटक मिश्रण होगा।
Kotlin Android में Duplicate class एरर के टॉप-5 कारण
\n\nहमने सबसे सामान्य परिदृश्य एकत्र किए हैं जिनका सामना आप वास्तविक डेवलपमेंट में करेंगे। प्रत्येक बिंदु कोड उदाहरण और समाधान के साथ है।
\n\n1. Kotlin stdlib के संस्करणों का टकराव
\n\nयह सभी डुप्लिकेट का राजा है। जब आप एक ऐसी लाइब्रेरी जोड़ते हैं जो अपने साथ kotlin-stdlib का एक संस्करण खींचती है, और आपके प्रोजेक्ट में पहले से दूसरा संस्करण है — तो टकराव होता है।
उदाहरण:
\n// build.gradle.kts (ऐप मॉड्यूल)\ndependencies {\n implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0")\n implementation("com.some.library:example:2.0.0") // यह लाइब्रेरी kotlin-stdlib:1.8.0 खींचती है\n}\n\n\nGradle कुछ इस तरह दिखाएगा:
\nDuplicate class kotlin.collections.ArraysKt found in modules kotlin-stdlib-1.9.0 (org.jetbrains.kotlin:kotlin-stdlib:1.9.0) and kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0)\n\n\nसमाधान: पूरे प्रोजेक्ट के लिए Kotlin का एक समान संस्करण उपयोग करें। सबसे अच्छा तरीका इसे रूट build.gradle.kts में सेट करना है:
// build.gradle.kts (रूट)\nplugins {\n kotlin("android") version "1.9.0" apply false\n}\n\n// build.gradle.kts (ऐप मॉड्यूल)\nplugins {\n kotlin("android")\n}\n\n\nआप डिपेंडेंसी को स्पष्ट रूप से बाहर भी कर सकते हैं:
\nimplementation("com.some.library:example:2.0.0") {\n exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")\n}\n\n\n2. AndroidX और Support Library का डुप्लिकेशन
\n\nयह एक क्लासिक समस्या है। यदि आप AndroidX के साथ पुरानी Support Library का उपयोग करते हैं, तो उनमें समान क्लास होते हैं (उदाहरण के लिए, android.support.v4.app.Fragment और androidx.fragment.app.Fragment)।
एरर का उदाहरण:
\nDuplicate class android.support.v4.app.Fragment found in modules support-compat-28.0.0 and fragment-1.6.0\n\n\nसमाधान:
\n- \n
gradle.propertiesमें फ़्लैगandroid.useAndroidX=trueचालू करें। \n - सुनिश्चित करें कि सभी लाइब्रेरी AndroidX में बदल दी गई हैं। Android Studio में माइग्रेशन टूल का उपयोग करें (Refactor > Migrate to AndroidX)। \n
- यदि कोई लाइब्रेरी AndroidX का समर्थन नहीं करती है, तो उसके लिए कोई विकल्प खोजें या उसे अपडेट करें। \n