CocoaPods Plugin — यह क्या है, KMM के लिए प्लगइन और सेटअप

लेखक: IT Sectr प्रकाशित: 2026-06-05 पढ़ने का समय: 8 मिनट

CocoaPods Plugin Kotlin Multiplatform Mobile के लिए एक Gradle प्लगइन है जो CocoaPods निर्भरता प्रबंधक को सीधे KMM प्रोजेक्ट की बिल्ड प्रणाली में एकीकृत करता है। प्लगइन आपको build.gradle.kts में सीधे iOS निर्भरताएँ (pods) घोषित करने, स्वचालित रूप से Podfile जनरेट करने, pods इंस्टॉल करने और उन्हें Kotlin कोड से जोड़ने की अनुमति देता है। मैन्युअल रूप से .xcworkspace प्रबंधित करने के बजाय, डेवलपर Gradle के माध्यम से iOS निर्भरताओं का प्रबंधन करता है, जिससे KMM प्रोजेक्ट सेटअप पूरी तरह से पुनरुत्पादनीय हो जाता है। JetBrains, 2025 के अनुसार, प्लगइन का उपयोग 20% KMM प्रोजेक्ट्स में iOS लाइब्रेरीज़ प्रबंधित करने के लिए किया जाता है।

मुख्य बिंदु

  • CocoaPods Plugin CocoaPods को Kotlin Multiplatform Mobile के साथ एकीकृत करने के लिए एक Gradle प्लगइन है।
  • स्वचालन — प्लगइन Podfile जनरेट करता है और Gradle से pod निर्भरताओं का प्रबंधन करता है।
  • Podfile CocoaPods का कॉन्फ़िगरेशन फ़ाइल है जिसे प्लगइन स्वचालित रूप से बनाता और बनाए रखता है।
  • .xcworkspace Xcode का कार्यक्षेत्र है जिसे प्लगइन iOS प्रोजेक्ट के साथ एकीकरण के लिए जनरेट करता है।
  • KMM एकीकरण — प्लगइन Kotlin/Native फ्रेमवर्क को iOS pod निर्भरताओं से जोड़ता है।

CocoaPods Plugin क्या है?

CocoaPods Plugin (kotlin.cocoapods के नाम से भी जाना जाता है) CocoaPods को Kotlin Multiplatform Mobile के साथ एकीकृत करने के लिए JetBrains का एक आधिकारिक प्लगइन है। प्लगइन Kotlin Gradle DSL का हिस्सा है और इसे सीधे KMM मॉड्यूल के build.gradle.kts में कॉन्फ़िगर किया जाता है। यह Podfile के निर्माण और रखरखाव, .xcworkspace जनरेशन और pod निर्भरताओं के प्रबंधन को स्वचालित करता है, जिससे मैन्युअल Xcode प्रोजेक्ट कॉन्फ़िगरेशन की आवश्यकता समाप्त हो जाती है।

CocoaPods Plugin से पहले, KMM डेवलपर्स को मैन्युअल रूप से Podfile बनाना, pod install चलाना, bridge हेडर कॉन्फ़िगर करना और Gradle निर्भरताओं से अलग pod संस्करणों पर नज़र रखनी पड़ती थी। इससे संस्करण असंगति और CI/CD पाइपलाइनों में कठिनाइयाँ होती थीं। प्लगइन ने iOS निर्भरता प्रबंधन को Android मॉड्यूल में Gradle निर्भरताओं के प्रबंधन जितना सरल बनाकर इन समस्याओं को हल किया।

प्लगइन CocoaPods Trunk से सार्वजनिक pods और निजी रिपॉजिटरी से कस्टम pods दोनों का समर्थन करता है। स्थानीय Podspec और git-आधारित रिपॉजिटरी के साथ काम करना भी समर्थित है। प्लगइन Kotlin 1.6.0 और उससे ऊपर के संस्करणों के साथ संगत है, और डेवलपमेंट मशीन पर CocoaPods (gem install cocoapods) स्थापित होना आवश्यक है।

CocoaPods Plugin कैसे काम करता है

CocoaPods Plugin Gradle task-graph स्तर पर काम करता है, CocoaPods के साथ काम करने के लिए विशेष कार्य जोड़ता है। मुख्य कार्यों में podInstall (pods स्थापित करना), podGenXcodeWorkspace (.xcworkspace जनरेट करना) और podBuildDebugFramework (फ्रेमवर्क का Debug संस्करण बनाना) शामिल हैं। प्लगइन build.gradle.kts में cocoapods अनुभाग का विश्लेषण करता है, घोषित निर्भरताओं के आधार पर Podfile बनाता है, और आवश्यक पैरामीटर के साथ pod install चलाता है।

प्लगइन की वास्तुकला में तीन घटक शामिल हैं: build.gradle.kts के लिए DSL एक्सटेंशन, Podfile बनाने के लिए Podfile जनरेटर और .xcworkspace कॉन्फ़िगर करने के लिए Xcode एकीकरण परत। DSL एक्सटेंशन निर्भरताएँ घोषित करने के लिए नेस्टेड pod() फ़ंक्शन, निजी रिपॉजिटरी निर्दिष्ट करने के लिए specRepo() और आउटपुट फ्रेमवर्क कॉन्फ़िगर करने के लिए framework { } के साथ एक cocoapods { } ब्लॉक प्रदान करता है। Podfile जनरेटर इन घोषणाओं को CocoaPods द्वारा समझी जाने वाली Ruby सिंटैक्स में अनुवादित करता है।

kotlin
kotlin {
    cocoapods {
        summary = "Shared module for iOS project"
        homepage = "https://itsectr.com"
        framework {
            baseName = "Shared"
            isStatic = true
            export(project(":core"))
        }
        pod("Alamofire") {
            version = "~> 5.9"
        }
        pod("Kingfisher") {
            version = "7.12"
        }
    }
}

podInstall कार्य का जीवनचक्र

podInstall निष्पादित करते समय, प्लगइन क्रमिक रूप से: प्रोजेक्ट रूट में Podfile जनरेट करता है, कमांड लाइन के माध्यम से pod install चलाता है, .xcworkspace जनरेट करता है, जाँचता है कि pod संस्करण घोषित संस्करणों से मेल खाते हैं, और Podfile.lock को कैश करता है। बाद के रनों में कॉन्फ़िगरेशन परिवर्तनों के बिना, podInstall को छोड़ दिया जाता है यदि Podfile.lock नहीं बदला है। यह CI/CD में समय बचाता है, जहाँ pod install को साफ इंस्टॉलेशन में 2-3 मिनट तक लग सकते हैं।

KMM प्रोजेक्ट में CocoaPods Plugin सेटअप करना

CocoaPods Plugin सेटअप करने के लिए कई चरण आवश्यक हैं। डेवलपमेंट मशीन पर CocoaPods स्थापित करना (gem install cocoapods) एक पूर्वापेक्षा है। फिर, शेयर्ड मॉड्यूल के build.gradle.kts में, फ्रेमवर्क कॉन्फ़िगरेशन और निर्भरताओं के साथ एक cocoapods { } ब्लॉक जोड़ा जाता है। कॉन्फ़िगरेशन के बाद, podInstall कार्य निष्पादित करें, जो Podfile बनाएगा और pods स्थापित करेगा। जनरेट किया गया .xcworkspace Podfile के बगल में प्रोजेक्ट रूट में स्थित होगा।

प्लगइन Xcode बिल्ड फेज़ के साथ एकीकृत होता है। iOS ऐप बनाते समय, Xcode embedAndSignAppleFrameworkForXcode चलाता है — एक कार्य जो Kotlin/Native फ्रेमवर्क को ऐप बंडल में कॉपी करता है। CocoaPods Plugin .xcworkspace जनरेट करते समय इस बिल्ड फेज़ को स्वचालित रूप से जोड़ता है। यदि .xcworkspace जनरेट किया गया था, तो pod निर्भरताओं के साथ सही बिल्ड के लिए इसे .xcodeproj के बजाय खोला जाना चाहिए।

चरणविवरणकमांड / क्रिया
1CocoaPods स्थापित करेंgem install cocoapods
2build.gradle.kts में प्लगइन जोड़ेंkotlin { cocoapods { ... } }
3pods घोषित करेंpod("Alamofire") { version = "5.9.0" }
4Podfile जनरेट करें./gradlew :shared:podInstall (स्वचालित रूप से)
5.xcworkspace खोलें.xcodeproj के बजाय
6iOS ऐप बनाएँXcode Build (⌘B)

कोड उदाहरण: pod कॉन्फ़िगरेशन

आइए CocoaPods Plugin में pods घोषित करने के विभिन्न परिदृश्यों को देखें। मूल मामला निर्दिष्ट संस्करण के साथ CocoaPods Trunk से एक सार्वजनिक pod कनेक्ट करना है। अधिक जटिल परिदृश्यों में कस्टम podspec, स्थानीय pods और git रिपॉजिटरी से pods का उपयोग शामिल है।

kotlin
kotlin {
    iosArm64()
    iosSimulatorArm64()

    cocoapods {
        framework {
            baseName = "Shared"
            isStatic = false
        }

        // CocoaPods Trunk से सार्वजनिक pod
        pod("Alamofire") { version = "5.9.0" }

        // ऑपरेटर के साथ कस्टम संस्करण
        pod("SnapKit") { version = "~> 5.6" }

        // निजी रिपॉजिटरी से pod
        specRepo("https://git.itsectr.com/specs.git",
            "internal-specs")
        pod("InternalAnalyticsPod")

        // पथ के साथ स्थानीय pod
        pod(name = "CustomPod",
            localPath = "./ios-pods/CustomPod")

        // git रिपॉजिटरी से pod
        pod(name = "PrivateSDK",
            git = "https://git.itsectr.com/ios/sdk.git",
            tag = "2.1.0")
    }
}

pods कनेक्ट करना कॉन्फ़िगरेशन का केवल एक हिस्सा है। प्लगइन आपको अन्य Kotlin मॉड्यूल से iOS फ्रेमवर्क में निर्भरताएँ निर्यात करने की भी अनुमति देता है। export(project(":core")) फ़ंक्शन निर्दिष्ट करता है कि :core मॉड्यूल के सभी सार्वजनिक API जनरेट किए गए फ्रेमवर्क के Objective-C हेडर से सुलभ होने चाहिए। यह आवश्यक है जब साझा Kotlin कोड किसी अन्य मॉड्यूल से क्लास का उपयोग करता है और उन्हें Swift से सुलभ होने की आवश्यकता होती है।

kotlin
cocoapods {
    framework {
        baseName = "Shared"
        // iOS फ्रेमवर्क में मॉड्यूल निर्यात करें
        export(project(":network"))
        export(project(":domain"))

        // स्थिर या गतिशील लिंकिंग
        isStatic = true
    }

    // निर्यात किए गए मॉड्यूल के लिए आवश्यक pod
    pod("Moya") { version = "15.0" }
}

बिल्ड और परीक्षण

कॉन्फ़िगरेशन के बाद, Podfile जनरेट करने और निर्भरताएँ स्थापित करने के लिए podInstall चलाना आवश्यक है। फिर जनरेट किया गया .xcworkspace Xcode में खोला जाता है, जहाँ ऐप को मानक विधि से बनाया जा सकता है। CI/CD के लिए, सुनिश्चित करें कि बिल्ड मशीन पर CocoaPods और Ruby स्थापित हैं। प्लगइन CI वातावरण में काम करने के लिए --no-daemon फ़्लैग का समर्थन करता है।

kotlin
// pods स्थापित करने से Podfile + xcworkspace जनरेट होता है
./gradlew :shared:podInstall

// परीक्षण के लिए debug फ्रेमवर्क बनाएँ
./gradlew :shared:podBuildDebugFramework

// कमांड लाइन से पूर्ण iOS बिल्ड
xcodebuild -workspace ios-app.xcworkspace \
    -scheme ios-app -configuration Debug

CocoaPods Plugin बनाम Swift Package Manager

Swift Package Manager (SPM) Apple का एक वैकल्पिक निर्भरता प्रबंधक है जो लोकप्रियता प्राप्त कर रहा है और धीरे-धीरे iOS समुदाय में CocoaPods की जगह ले रहा है। हालाँकि, CocoaPods Plugin कई कारणों से प्रासंगिक बना हुआ है: SPM KMM संदर्भ में डायनामिक फ्रेमवर्क का समर्थन नहीं करता है, और SPM के माध्यम से Kotlin/Native फ्रेमवर्क के एकीकरण के लिए अतिरिक्त सेटअप की आवश्यकता होती है। CocoaPods Plugin अधिक परिपक्व और दस्तावेज़ीकृत एकीकरण पथ प्रदान करता है।

CocoaPods Plugin और सीधे SPM एकीकरण की तुलना से पता चलता है कि पहला स्वचालन में जीतता है, जबकि दूसरा मूल Apple समर्थन में जीतता है। CocoaPods Plugin स्वचालित रूप से Podfile जनरेट करता है, संस्करणों का प्रबंधन करता है और Xcode बिल्ड फेज़ कॉन्फ़िगर करता है। SPM को Package.swift के माध्यम से Kotlin फ्रेमवर्क को मैन्युअल रूप से कनेक्ट करने की आवश्यकता होती है, जो बड़े KMM प्रोजेक्ट्स के लिए बनाए रखना अधिक कठिन है। JetBrains Kotlin/Native के लिए SPM समर्थन पर काम कर रहा है, लेकिन 2025 तक SPM एकीकरण प्रयोगात्मक बना हुआ है।

विशेषताCocoaPods PluginSwift Package Manager
परिपक्वताउत्पादन-तैयारप्रयोगात्मक
Podfile जनरेशनस्वचालितलागू नहीं
डायनामिक फ्रेमवर्कसमर्थितसीमित
CI/CD सेटअपसरल (Gradle कार्य)मैन्युअल चरण आवश्यक
निजी रिपॉजिटरीसमर्थित (specRepo)समर्थित (URL)
मूल Apple समर्थनCocoaPods के माध्यम सेमूल

सामान्य समस्याएँ और समाधान

CocoaPods Plugin का उपयोग करते समय, KMM डेवलपर्स कई विशिष्ट समस्याओं का सामना करते हैं। pod संस्करण विरोध सबसे आम समस्या है, जब दो pods को एक ही निर्भरता के विभिन्न संस्करणों की आवश्यकता होती है। समाधान pod("Dependency") { version = "x.x" } के माध्यम से विरोध करने वाली निर्भरता के संस्करण को स्पष्ट रूप से निर्दिष्ट करना है। दूसरा सामान्य मामला संस्करण असंगति है, जब एक pod को KMM प्रोजेक्ट के न्यूनतम संस्करण से नए iOS SDK की आवश्यकता होती है।

.xcworkspace के साथ समस्याएँ तब उत्पन्न होती हैं यदि प्लगइन कॉन्फ़िगर करने के बाद .xcodeproj को .xcworkspace के बजाय खोला जाता है। प्लगइन podInstall लॉग में इसके बारे में चेतावनी देता है। एक और लगातार त्रुटि डेवलपमेंट मशीन पर CocoaPods की अनुपस्थिति है। प्लगइन podInstall चलाने से पहले pod कमांड की उपस्थिति की जाँच करता है और एक स्पष्ट त्रुटि संदेश दिखाता है। CI/CD के लिए, CocoaPods स्थापित करें: gem install cocoapods.

kotlin
// संस्करण विरोध हल करें
cocoapods {
    pod("Alamofire") { version = "5.9.0" }
    // विरोध को स्पष्ट रूप से हल करें
    pod("Alamofire") {
        version = "5.9.0"
        options[name] = mapOf("force" to true)
    }
}

// Gradle के माध्यम से CocoaPods इंस्टॉलेशन जाँचें
tasks.register("checkCocoapods") {
    doLast {
        val result = "pod --version".runCommand()
        println("CocoaPods संस्करण: $result")
    }
}

podInstall डीबग करना

यदि podInstall विफल होता है, तो विस्तृत आउटपुट के लिए --info फ़्लैग का उपयोग करें: ./gradlew podInstall --info। प्लगइन प्रत्येक चरण को लॉग करता है: Podfile जनरेशन, pod install निष्पादन, Podfile.lock पार्सिंग। अक्सर, त्रुटियाँ नेटवर्क समस्याओं (CocoaPods Trunk अनुपलब्ध) या गलत Podfile सिंटैक्स से संबंधित होती हैं। ऐसे मामलों में, CocoaPods से अधिक विस्तृत त्रुटि संदेश प्राप्त करने के लिए प्रोजेक्ट रूट में मैन्युअल रूप से pod install चलाने का प्रयास करें।

अक्सर पूछे जाने वाले प्रश्न

क्या मुझे CocoaPods Plugin की आवश्यकता है यदि मैं केवल Swift Package Manager का उपयोग करता हूँ?

यदि सभी iOS निर्भरताएँ SPM के माध्यम से प्रबंधित की जाती हैं, तो CocoaPods Plugin आवश्यक नहीं है। प्लगइन CocoaPods के साथ एकीकरण के लिए आवश्यक है। JetBrains SPM समर्थन पर काम कर रहा है, लेकिन 2025 तक यह प्रयोगात्मक है।

CocoaPods Plugin बिल्ड समय को कैसे प्रभावित करता है?

बिल्ड समय केवल पहले podInstall रन (Podfile जनरेशन + pod इंस्टॉलेशन) के दौरान बढ़ता है। बाद के बिल्ड Podfile.lock कैश का उपयोग करते हैं। Kotlin/Native फ्रेमवर्क बिल्ड स्वयं pods पर निर्भर नहीं करता है।

क्या मैं निजी podspec रिपॉजिटरी का उपयोग कर सकता हूँ?

हाँ, प्लगइन निजी रिपॉजिटरी कनेक्ट करने के लिए specRepo सुविधा का समर्थन करता है। specRepo में रिपॉजिटरी URL और नाम निर्दिष्ट करें, जिसके बाद उस रिपॉजिटरी के pods घोषणा के लिए उपलब्ध हो जाते हैं।

यदि podInstall त्रुटि के साथ विफल होता है तो मुझे क्या करना चाहिए?

विस्तृत त्रुटि संदेश के लिए प्रोजेक्ट रूट में मैन्युअल रूप से pod install चलाएँ। CocoaPods Trunk से कनेक्शन, pod संस्करणों की शुद्धता और मशीन पर Ruby की उपस्थिति की जाँच करें।

क्या Podfile.lock को git में कमिट करना चाहिए?

हाँ, पुनरुत्पादनीय बिल्ड के लिए Podfile.lock को कमिट किया जाना चाहिए। CocoaPods Plugin Podfile जनरेट करता है, लेकिन Podfile.lock pod install के दौरान स्थापित सटीक pod संस्करणों को लॉक करता है।

सारांश

  • CocoaPods Plugin CocoaPods को KMM के साथ एकीकृत करने के लिए एक Gradle प्लगइन है, जो iOS निर्भरता प्रबंधन को स्वचालित करता है।
  • Podfile और .xcworkspace podInstall कार्यों द्वारा स्वचालित रूप से जनरेट होते हैं, जिससे मैन्युअल Xcode कॉन्फ़िगरेशन समाप्त हो जाता है।
  • लचीला कॉन्फ़िगरेशन सार्वजनिक pods, निजी specRepo, स्थानीय और git-आधारित निर्भरताओं का समर्थन करता है।
  • मॉड्यूल निर्यात export() के माध्यम से Kotlin मॉड्यूल API को Objective-C/Swift से सुलभ बनाता है।
  • स्थिर और गतिशील लिंकिंग फ्रेमवर्क की isStatic कॉन्फ़िगरेशन के माध्यम से उपलब्ध है।
  • CI/CD बाद के बिल्ड को गति देने के लिए Podfile.lock कैशिंग के साथ Gradle कार्य ग्राफ के माध्यम से समर्थित है।
  • CocoaPods Plugin का उपयोग करें यदि आपके KMM प्रोजेक्ट में SPM के बजाय CocoaPods के माध्यम से प्रबंधित iOS निर्भरताएँ हैं।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें