Kotlin Android में Duplicate Class: टॉप-5 गलतियाँ और समाधान

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

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

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

परिचय: आपके प्रोजेक्ट में "जुड़वाँ" समस्या

\n\n

एक स्थिति की कल्पना करें: आप Android के लिए Kotlin में कोड लिख रहे हैं, सब कुछ बढ़िया चल रहा है। आप एक नई लाइब्रेरी जोड़ते हैं, बिल्ड चलाते हैं — और Gradle एक लाल एरर दिखाता है: «Duplicate class»। परिचित लग रहा है? यदि आपने कभी Android डेवलपमेंट किया है, तो आपने यह संदेश ज़रूर देखा होगा। Stack Overflow पर इस सवाल के हज़ारों व्यूज़ हैं, और यह कोई आश्चर्य की बात नहीं है — यह एरर एक अनुभवी डेवलपर को भी परेशान कर सकता है।

\n\n

इस लेख में, हम जानेंगे कि Kotlin Android में Duplicate class क्या है, यह क्यों होता है, और सबसे महत्वपूर्ण बात — इसे हमेशा के लिए कैसे ठीक करें। आप 5 सबसे सामान्य कारणों को जानेंगे, तैयार समाधान प्राप्त करेंगे, और डिपेंडेंसी कॉन्फ्लिक्ट को रोकना सीखेंगे। चलिए शुरू करते हैं!

\n\n

Duplicate class क्या है और ऐसा क्यों होता है?

\n\n

Duplicate class एरर तब होता है जब बिल्ड सिस्टम (Gradle) एक ही पूर्ण नाम (FQN — Fully Qualified Name) वाले दो या अधिक समान क्लास ढूंढ लेता है। Android की दुनिया में, इसका आमतौर पर मतलब है कि एक ही क्लास आपके प्रोजेक्ट की अलग-अलग लाइब्रेरी या मॉड्यूल में मौजूद है।

\n\n

कल्पना करें कि आपने दो एक जैसी किताबें ऑर्डर कीं, लेकिन अलग-अलग प्रकाशकों से। वे एक ही शेल्फ पर रखी हैं — और लाइब्रेरियन को नहीं पता कि कौन सी लेनी है। Gradle के साथ भी ऐसा ही है: वह तय नहीं कर पाता कि डुप्लिकेट क्लास में से किसका उपयोग करे।

\n\n

Kotlin के लिए यह विशेष रूप से प्रासंगिक क्यों है? Kotlin सक्रिय रूप से अपनी स्टैंडर्ड लाइब्रेरी (kotlin-stdlib) का उपयोग करता है, जो अन्य स्रोतों से उसी के संस्करणों के साथ संघर्ष कर सकती है। इसमें AndroidX, Google लाइब्रेरी, Firebase जोड़ें — और आपके पास एक विस्फोटक मिश्रण होगा।

\n\n

Kotlin Android में Duplicate class एरर के टॉप-5 कारण

\n\n

हमने सबसे सामान्य परिदृश्य एकत्र किए हैं जिनका सामना आप वास्तविक डेवलपमेंट में करेंगे। प्रत्येक बिंदु कोड उदाहरण और समाधान के साथ है।

\n\n

1. Kotlin stdlib के संस्करणों का टकराव

\n\n

यह सभी डुप्लिकेट का राजा है। जब आप एक ऐसी लाइब्रेरी जोड़ते हैं जो अपने साथ kotlin-stdlib का एक संस्करण खींचती है, और आपके प्रोजेक्ट में पहले से दूसरा संस्करण है — तो टकराव होता है।

\n\n

उदाहरण:

\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\n

Gradle कुछ इस तरह दिखाएगा:

\n
Duplicate 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 में सेट करना है:

\n
// 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

आप डिपेंडेंसी को स्पष्ट रूप से बाहर भी कर सकते हैं:

\n
implementation("com.some.library:example:2.0.0") {\n    exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")\n}\n
\n\n

2. AndroidX और Support Library का डुप्लिकेशन

\n\n

यह एक क्लासिक समस्या है। यदि आप AndroidX के साथ पुरानी Support Library का उपयोग करते हैं, तो उनमें समान क्लास होते हैं (उदाहरण के लिए, android.support.v4.app.Fragment और androidx.fragment.app.Fragment)।

\n\n

एरर का उदाहरण:

\n
Duplicate 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

ब्लॉग

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