CocoaPods Plugin — bu nədir, KMM üçün plagin və konfiqurasiya

Müəllif: IT Sectr Dərc olunub: 2026-06-05 Oxuma vaxtı: 8 dəq

CocoaPods Plugin — Kotlin Multiplatform Mobile üçün Gradle plaginidir, asılılıq meneceri CocoaPods-u birbaşa KMM layihəsinin qurma sisteminə inteqrasiya edir. Plagin build.gradle.kts-də birbaşa iOS asılılıqlarını (podları) bəyan etməyə, Podfile-ı avtomatik yaratmağa, podları quraşdırmağa və onları Kotlin kodu ilə əlaqələndirməyə imkan verir. .xcworkspace-in əl ilə idarə edilməsi əvəzinə, tərtibatçı iOS asılılıqlarını Gradle vasitəsilə idarə edir, bu da KMM layihəsinin konfiqurasiyasını tam təkrarlana bilən edir. JetBrains, 2025 məlumatlarına görə, plagin iOS kitabxanalarını idarə etmək üçün KMM layihələrinin 20%-də istifadə olunur.

Əsas məqamlar

  • CocoaPods Plugin — CocoaPods-u Kotlin Multiplatform Mobile ilə inteqrasiya etmək üçün Gradle plaginidir.
  • Avtomatlaşdırma — plagin Podfile yaradır və pod asılılıqlarını Gradle-dən idarə edir.
  • Podfile — plaginin avtomatik yaratdığı və dəstəklədiyi CocoaPods konfiqurasiya faylı.
  • .xcworkspace — iOS layihəsi ilə inteqrasiya üçün plagin tərəfindən yaradılan Xcode iş sahəsi.
  • KMM inteqrasiyası — plagin Kotlin/Native framework-u iOS pod asılılıqları ilə əlaqələndirir.

CocoaPods Plugin nədir?

CocoaPods Plugin (həmçinin kotlin.cocoapods kimi tanınır) — CocoaPods-u Kotlin Multiplatform Mobile ilə inteqrasiya etmək üçün JetBrains-in rəsmi plaginidir. Plagin Kotlin Gradle DSL-in bir hissəsidir və birbaşa KMM modulunun build.gradle.kts-də konfiqurasiya olunur. O, Podfile-ın yaradılması və saxlanmasını, .xcworkspace-in generasiyasını və pod asılılıqlarının idarə edilməsini avtomatlaşdırır, tərtibatçını Xcode layihəsinin əl ilə konfiqurasiyasından azad edir.

CocoaPods Plugin meydana gəlməzdən əvvəl, KMM tərtibatçıları Podfile-ı əl ilə yaratmağa, pod install-i işə salmağa, bridge-headerları konfiqurasiya etməyə və pod versiyalarını Gradle asılılıqlarından ayrı izləməyə məcbur idilər. Bu, versiyaların desinxronizasiyasına və CI/CD pipeline-larında çətinliklərə səbəb olurdu. Plagin bu problemləri həll etdi, iOS asılılıqlarının idarə edilməsini Android modullarında Gradle asılılıqlarının idarə edilməsi qədər sadə etdi.

Plagin həm CocoaPods Trunk-dən ictimai podları, həm də şəxsi repozitoriyalardan xüsusi podları dəstəkləyir. Yerli Podspec və git əsaslı repozitoriyalarla iş də dəstəklənir. Plagin Kotlin 1.6.0 və daha yuxarı versiyaları ilə uyğundur, həmçinin tərtibatçı maşınında CocoaPods-un quraşdırılmasını tələb edir (gem install cocoapods).

CocoaPods Plugin necə işləyir

CocoaPods Plugin Gradle task-qrafiki səviyyəsində işləyir, CocoaPods ilə iş üçün ixtisaslaşmış tapşırıqlar əlavə edir. Əsas tapşırıqlara podInstall (podların quraşdırılması), podGenXcodeWorkspace (.xcworkspace-in yaradılması) və podBuildDebugFramework (debug framework versiyasının qurulması) daxildir. Plagin build.gradle.kts-də cocoapods bölməsini təhlil edir, bəyan edilmiş asılılıqlar əsasında Podfile yaradır və lazımi parametrlərlə pod install-i işə salır.

Plaginin arxitekturası üç komponentdən ibarətdir: build.gradle.kts üçün DSL genişlənməsi, Podfile yaratmaq üçün Podfile Generator və .xcworkspace-i konfiqurasiya etmək üçün Xcode İnteqrasiya Təbəqəsi. DSL genişlənməsi asılılıqları bəyan etmək üçün pod() funksiyaları, şəxsi repozitoriyaları göstərmək üçün specRepo() və çıxış framework-unu konfiqurasiya etmək üçün framework { } olan cocoapods { } blokunu təmin edir. Podfile Generator bu bəyanatları CocoaPods üçün başa düşülən Ruby sintaksisinə tərcümə edir.

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 tapşırığının həyat dövrü

podInstall icra edilərkən, plagin ardıcıl olaraq: layihənin kökündə Podfile yaradır, komanda sətri vasitəsilə pod install-i işə salır, .xcworkspace yaradır, pod versiyalarının bəyan edilənlərə uyğunluğunu yoxlayır və Podfile.lock-u keşləyir. Konfiqurasiyada dəyişiklik olmadan təkrar işə salındıqda, Podfile.lock dəyişməyibsə podInstall buraxılır. Bu, pod install-in təmiz qurulmada 2-3 dəqiqəyə qədər çəkə biləcəyi CI/CD-də vaxta qənaət edir.

KMM layihəsində CocoaPods Plugin-in qurulması

CocoaPods Plugin-in qurulması üçün bir neçə addım yerinə yetirilməlidir. Tərtibatçı maşınında CocoaPods-un quraşdırılması (gem install cocoapods) məcburi şərtdir. Daha sonra shared modulunun build.gradle.kts-də framework və asılılıqların konfiqurasiyası ilə cocoapods { } bloku əlavə edilir. Konfiqurasiyadan sonra Podfile yaradacaq və podları quraşdıracaq podInstall tapşırığı icra edilməlidir. Yaradılan .xcworkspace Podfile ilə yanaşı layihənin kök kataloqunda yerləşəcək.

Plagin Xcode Build Phases ilə inteqrasiya olunur. iOS tətbiqi qurularkən, Xcode embedAndSignAppleFrameworkForXcode — Kotlin/Native framework-unu tətbiq paketinə kopyalayan tapşırığı işə salır. CocoaPods Plugin bu build phase-i .xcworkspace yaradılarkən avtomatik əlavə edir. Əgər .xcworkspace yaradılıbsa, pod asılılıqları ilə düzgün qurma üçün .xcodeproj əvəzinə onu açmaq lazımdır.

AddımTəsvirƏmr / Hərəkət
1CocoaPods-un quraşdırılmasıgem install cocoapods
2Plaginin build.gradle.kts-ə əlavə edilməsikotlin { cocoapods { ... } }
3Podların bəyan edilməsipod("Alamofire") { version = "5.9.0" }
4Podfile-ın yaradılması./gradlew :shared:podInstall (avtomatik)
5.xcworkspace-in açılması.xcodeproj əvəzinə
6iOS tətbiqinin qurulmasıXcode Build (⌘B)

Kod nümunələri: podların konfiqurasiyası

CocoaPods Plugin-də podların bəyan edilməsinin müxtəlif ssenarilərini nəzərdən keçirək. Əsas hal — versiya göstərilməklə CocoaPods Trunk-dən ictimai podun qoşulması. Daha mürəkkəb ssenarilərə xüsusi podspec, lokal podlar və git repozitoriyalarından podların istifadəsi daxildir.

kotlin
kotlin {
    iosArm64()
    iosSimulatorArm64()

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

        // CocoaPods Trunk-dən ictimai pod
        pod("Alamofire") { version = "5.9.0" }

        // Operatorla xüsusi versiya
        pod("SnapKit") { version = "~> 5.6" }

        // Şəxsi repozitoriyadan pod
        specRepo("https://git.itsectr.com/specs.git",
            "internal-specs")
        pod("InternalAnalyticsPod")

        // Yolu olan lokal pod
        pod(name = "CustomPod",
            localPath = "./ios-pods/CustomPod")

        // Git repozitoriyasından pod
        pod(name = "PrivateSDK",
            git = "https://git.itsectr.com/ios/sdk.git",
            tag = "2.1.0")
    }
}

Podların qoşulması konfiqurasiyanın yalnız bir hissəsidir. Plagin həmçinin digər Kotlin modullarından asılılıqları iOS framework-unə ixrac etməyə imkan verir. export(project(":core")) funksiyası göstərir ki, :core modulunun bütün ictimai API-ləri yaradılan framework-un Objective-C başlığından əlçatan olmalıdır. Bu, ümumi Kotlin kodu başqa modulun siniflərini istifadə etdikdə və onlar Swift-dən əlçatan olmalı olduqda lazımdır.

kotlin
cocoapods {
    framework {
        baseName = "Shared"
        // Modulları iOS framework-ə ixrac et
        export(project(":network"))
        export(project(":domain"))

        // Statik və ya dinamik birləşdirmə
        isStatic = true
    }

    // İxrac edilmiş modullar üçün tələb olunan pod
    pod("Moya") { version = "15.0" }
}

Qurma və test etmə

Konfiqurasiya qurulduqdan sonra Podfile yaratmaq və asılılıqları quraşdırmaq üçün podInstall icra edilməlidir. Daha sonra yaradılan .xcworkspace Xcode-da açılır, burada tətbiqi standart üsulla qurmaq olar. CI/CD üçün qurma maşınında CocoaPods və Ruby-nin quraşdırıldığından əmin olmaq lazımdır. Plagin CI mühitində iş üçün --no-daemon bayrağını dəstəkləyir.

kotlin
// Podların quraşdırılması Podfile + xcworkspace yaradır
./gradlew :shared:podInstall

// Test üçün debug framework qur
./gradlew :shared:podBuildDebugFramework

// Komanda sətrindən tam iOS qurma
xcodebuild -workspace ios-app.xcworkspace \
    -scheme ios-app -configuration Debug

CocoaPods Plugin vs Swift Package Manager

Swift Package Manager (SPM) — Apple-dan alternativ asılılıq meneceridir, populyarlıq qazanır və tədricən iOS icmasında CocoaPods-u əvəz edir. Lakin CocoaPods Plugin bir neçə səbəbə görə aktual qalır: SPM KMM kontekstində dinamik framework-ları dəstəkləmir, Kotlin/Native framework-unun SPM vasitəsilə inteqrasiyası isə əlavə konfiqurasiya tələb edir. CocoaPods Plugin daha yetkin və sənədləşdirilmiş inteqrasiya yolu təmin edir.

Müqayisə CocoaPods Plugin və SPM vasitəsilə birbaşa inteqrasiya göstərir ki, birincisi avtomatlaşdırmada, ikincisi isə Apple-ın yerli dəstəyində üstündür. CocoaPods Plugin avtomatik Podfile yaradır, versiyaları idarə edir və Xcode Build Phases-lərini konfiqurasiya edir. SPM Kotlin framework-unun Package.swift vasitəsilə əl ilə qoşulmasını tələb edir, bu da böyük KMM layihələri üçün dəstəklənməsi daha çətindir. JetBrains Kotlin/Native üçün SPM dəstəyi üzərində işləyir, lakin 2025-ci ilə qədər SPM inteqrasiyası eksperimental olaraq qalır.

XüsusiyyətCocoaPods PluginSwift Package Manager
YetkinlikProduction-readyEksperimental
Podfile generasiyasıAvtomatikTətbiq edilmir
Dinamik framework-larDəstəklənirMəhdud
CI/CD qurulmasıSadə (Gradle tapşırığı)Əl addımları tələb edir
Şəxsi repozitoriyalarDəstəklənir (specRepo)Dəstəklənir (URL)
Apple-ın yerli dəstəyiCocoaPods vasitəsiləYerli

Tipik problemlər və həllər

CocoaPods Plugin istifadə edərkən KMM tərtibatçıları bir neçə tipik problemlə qarşılaşırlar. Pod versiya konflikti — ən çox rast gəlinən problem, iki pod eyni asılılığın müxtəlif versiyalarını tələb etdikdə baş verir. Həll yolu pod("Dependency") { version = "x.x" } vasitəsilə konflikt edən asılılığın versiyasını açıq şəkildə göstərməkdir. İkinci ümumi hal — pod KMM layihəsinin minimum versiyasından daha yeni iOS SDK tələb etdikdə versiya uyğunsuzluğudur.

.xcworkspace ilə problemlər plagin qurulduqdan sonra .xcworkspace əvəzinə .xcodeproj açıldıqda yaranır. Plagin bu barədə podInstall jurnallarında xəbərdarlıq edir. Digər ümumi səhv — tərtibatçı maşınında CocoaPods-un olmamasıdır. Plagin podInstall-i işə salmazdan əvvəl pod əmrinin mövcudluğunu yoxlayır və başa düşülən səhv mesajı göstərir. CI/CD üçün CocoaPods-u quraşdırmaq lazımdır: gem install cocoapods.

kotlin
// Versiya konfliktini həll et
cocoapods {
    pod("Alamofire") { version = "5.9.0" }
    // Konflikti açıq şəkildə həll et
    pod("Alamofire") {
        version = "5.9.0"
        options[name] = mapOf("force" to true)
    }
}

// CocoaPods quraşdırmasını Gradle vasitəsilə yoxla
tasks.register("checkCocoapods") {
    doLast {
        val result = "pod --version".runCommand()
        println("CocoaPods versiyası: $result")
    }
}

podInstall-in sazlanması

Əgər podInstall xəta ilə bitərsə, ətraflı çıxış üçün --info bayrağından istifadə edin: ./gradlew podInstall --info. Plagin hər addımı jurnallaşdırır: Podfile generasiyası, pod install-in işə salınması, Podfile.lock-un təhlili. Ən çox xətalar şəbəkə problemləri (CocoaPods Trunk-ə çatılmazlıq) və ya Podfile-in səhv sintaksisi ilə bağlıdır. Belə hallarda, CocoaPods-dan daha ətraflı səhv mesajı almaq üçün layihənin kökündə pod install-i əl ilə işə salmağa cəhd edin.

Tez-tez verilən suallar

Yalnız Swift Package Manager istifadə olunursa, CocoaPods Plugin lazımdırmı?

Bütün iOS asılılıqları SPM vasitəsilə idarə olunursa, CocoaPods Plugin məcburi deyil. Plagin CocoaPods ilə inteqrasiya üçün lazımdır. JetBrains SPM dəstəyi üzərində işləyir, lakin 2025-ci ilə qədər eksperimentaldır.

CocoaPods Plugin qurma vaxtına necə təsir edir?

Qurma vaxtı yalnız podInstall-in ilk işə salınmasında artır (Podfile generasiyası + podların quraşdırılması). Sonrakı qurmalar Podfile.lock keşindən istifadə edir. Kotlin/Native framework-unun özünün qurulması podlardan asılı deyil.

Şəxsi podspec repozitoriyalarından istifadə etmək olarmı?

Bəli, plagin şəxsi repozitoriyaları qoşmaq üçün specRepo funksiyasını dəstəkləyir. Repozitoriyanın URL-ni və adını specRepo-da göstərin, bundan sonra həmin repozitoriyadan podlar bəyan etmək üçün əlçatan olacaq.

podInstall xəta ilə bitərsə nə etməli?

Ətraflı səhv mesajı üçün layihənin kökündə pod install-i əl ilə işə salın. CocoaPods Trunk-ə qoşulmanı, pod versiyalarının düzgünlüyünü və maşında Ruby-nin mövcudluğunu yoxlayın.

Podfile.lock-u git-ə commit etmək lazımdırmı?

Bəli, təkrarlana bilən qurmalar üçün Podfile.lock-u commit etmək lazımdır. CocoaPods Plugin Podfile yaradır, lakin Podfile.lock pod install zamanı quraşdırılmış podların dəqiq versiyalarını qeyd edir.

Nəticə

  • CocoaPods Plugin — iOS asılılıqlarının idarə edilməsini avtomatlaşdıran, CocoaPods-u KMM ilə inteqrasiya etmək üçün Gradle plaginidir.
  • Podfile və .xcworkspace podInstall tapşırıqları tərəfindən avtomatik yaradılır, bu da Xcode-un əl ilə konfiqurasiyasını aradan qaldırır.
  • Çevik konfiqurasiya ictimai podları, şəxsi specRepo, lokal və git əsaslı asılılıqları dəstəkləyir.
  • Modulların ixracı export() vasitəsilə Kotlin modullarının API-lərini Objective-C/Swift-dən əlçatan edir.
  • Statik və dinamik birləşdirmə framework-un isStatic konfiqurasiyası vasitəsilə mövcuddur.
  • CI/CD təkrar qurmaları sürətləndirmək üçün Podfile.lock keşləməsi ilə Gradle tapşırıq qrafiki vasitəsilə dəstəklənir.
  • KMM layihəsində SPM deyil, CocoaPods vasitəsilə idarə olunan iOS asılılıqları varsa, CocoaPods Plugin-dən istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun