CocoaPods: əsas anlayışlar, iOS üçün asılılıq meneceri

Müəllif: IT Sectr Dərc olunub: 2026-02-12 Oxuma vaxtı: 10 dəq

CocoaPods — iOS, macOS, watchOS və tvOS layihələri üçün açıq mənbəli asılılıq meneceridir. CocoaPods Ruby dilində qurulub və 100 000-dən çox kitabxanası olan spesifikasiyalar reyestrindən (Specs) istifadə edir. İnteqrasiya layihənin bütün asılılıqlarını təsvir edən Podfile faylı vasitəsilə baş verir. Qurulumun nəticəsi əsas layihəni və bütün qoşulan modulları birləşdirən .xcworkspace-dir. CocoaPods iOS inkişafında ən populyar asılılıq meneceri olaraq qalır: Stack Overflow Survey (2025) sorğusuna görə, iOS tərtibatçılarının 34%-i ondan istifadə edir.

Əsas Məqamlar

  • CocoaPods — 100 000+ kitabxanası və 10 milyard yüklənməsi olan iOS üçün ən populyar asılılıq meneceri
  • Podfile — asılılıqların, onların versiyalarının və inteqrasiya parametrlərinin siyahısını əhatə edən Ruby konfiqurasiya faylı
  • Podspec — metadata, mənbə kodu və platforma tələblərini əhatə edən kitabxana spesifikasiya faylı
  • Qurulum pod install vasitəsilə .xcworkspace yaradır — yalnız bu fayl Xcode-da açılmalıdır
  • Podfile.lock asılılıqların dəqiq versiyalarını təsbit edərək, qurumanın təkrarlana bilməsini təmin edir
  • CocoaPods vs SPM: CocoaPods inteqrasiya üzərində daha çox nəzarət verir, SPM Xcode-a daxil edilib və üçüncü tərəf alətləri tələb etmir

CocoaPods nədir?

CocoaPods — Apple ekosistemi üçün Ruby dilində yazılmış və 2011-ci ildə Eladio Lopez tərəfindən nəşr edilmiş asılılıq meneceridir. CocoaPods Xcode layihələrinə üçüncü tərəf kitabxanaların inteqrasiyası problemini həll edir: faylların əl ilə köçürülməsi və linker flags konfiqurasiyası əvəzinə, tərtibatçı asılılıqları Podfile-də təsvir edir və pod install işə salır. CocoaPods avtomatik olaraq mənbə fayllarını yükləyir, kompilator bayraqlarını konfiqurasiya edir və .xcworkspace iş məkanı yaradır.

CocoaPods memarlığı üç komponentdən ibarətdir: CocoaPods.app (CLI aləti), Specs (GitHub-da mərkəzi spesifikasiyalar reyestri) və Podfile (layihə konfiqurasiyası). Specs reyestri versiya tarixçəsi ilə 100 000-dən çox kitabxana ehtiva edir. pod install yerinə yetirilərkən, CocoaPods reyestrin ən son versiyasını yükləyir (pod repo update), asılılıqları tapır, versiya ağacını həll edir və bütün podların inteqrasiyası ilə .xcworkspace yaradır. Hər bir kitabxana ayrıca target kimi kompilyasiya olunur ki, bu da asılılıqları təcrid etməyə və ad konfliktlərinin qarşısını almağa imkan verir.

CocoaPods Xcode ilə sıx inteqrasiya olunub: o, başlıq yolları və linker bayraqları ilə Pods.xcconfig faylları yaradır, həmçinin User Script Sandboxing konfiqurasiya edir. macOS-da CocoaPods-dan istifadə etmək üçün Ruby 2.6+ (bütün Mac-lərdə əvvəlcədən quraşdırılıb) və Command Line Tools ilə Xcode tələb olunur. Statistikalar: 2025-ci ildə CocoaPods 10 milyarddan çox pod yüklənməsini emal etdi və orta iOS layihəsində CocoaPods vasitəsilə 15-dən 40-a qədər asılılıq var.

CocoaPods necə işləyir

CocoaPods hər bir kitabxananı ayrıca Git deposu kimi yükləyir, onun .podspec spesifikasiyasını yoxlayır və statik freymvork və ya dinamik kitabxana kimi kompilyasiya edir. Podlar digər podlardan asılı ola bilər — CocoaPods asılılıq qrafəri qurur və versiya konfliktlərini həll edir. Əgər iki kitabxana eyni asılılığın müxtəlif versiyalarını tələb edərsə, CocoaPods uyğun versiya tapmağa çalışır və ya xəta bildirir. Bütün asılılıqlar və onların versiyaları Podfile.lock faylında təsbit edilir və versiya nəzarət sisteminə əlavə edilməlidir.

CocoaPods-un əl ilə inteqrasiya ilə müqayisədə üstünlükləri: asılılıqların avtomatik idarə edilməsi, mərkəzləşdirilmiş kitabxana reyestri, alt-spesifikasiyaların (subspecs) dəstəyi, şəxsi depolarların yaradılması imkanı və semantik nəzarət vasitəsilə versiyalaşdırma. Tərtibatçı komandası üçün CocoaPods bütün iştirakçıların eyni kitabxana versiyalarından istifadə etməsini təmin edir — Podfile.lock istənilən maşında qurumanın təkrarlana bilməsini təmin edir.

Podfile: struktur, sintaksis və nümunələr

Podfile — Xcode layihəsinin asılılıqlarını təyin edən Ruby dilində konfiqurasiya faylıdır. Podfile layihənin kök qovluğunda .xcodeproj ilə yanaşı yerləşir. CocoaPods sintaksisi Ruby DSL-ə (Domain Specific Language) əsaslanır ki, bu da dəyişənlərdən, şərtlərdən və dövrlərdən istifadə etməyə imkan verir. Minimal Podfile platforma və ən azı bir asılılıq ehtiva edir.

ruby
platform :ios, '15.0'

target 'MyApp' do
  pod 'Alamofire', '~> 5.9'
  pod 'SnapKit', '~> 5.7'
  pod 'Kingfisher', '~> 8.0'
end

platform :ios, '15.0' əsas sətri minimal iOS versiyasını təyin edir. target 'MyApp' direktivi konkret target üçün asılılıqları qruplaşdırır. Hər bir pod 'Name', '~> version' sətri kitabxananın adını və versiyasını göstərir. '~> 5.9' operatoru “5.9-dan 6.0-a qədər, 6.0 istisna olmaqla istənilən versiya” deməkdir — bu, breaking changes-dən qoruyan semantik versiyalaşdırmadır.

Versiyaların təsbiti və seçimlər

CocoaPods çevik versiya operatorlarını dəstəkləyir: '= 1.0' (dəqiq versiya), '>= 1.0' (minimal), '< 2.0' (maksimal), '~> 1.2.3' (yalnız patch). Kitabxananı lokal qovluqdan qoşmaq üçün pod 'MyLib', :path => '../MyLib' istifadə oluna bilər. Git-dən qoşmaq üçün: pod 'MyLib', :git => 'https://github.com/user/MyLib.git', :tag => '1.0.0'.

ruby
platform :ios, '15.0'
use_frameworks! :linkage => :static
inhibit_all_warnings!

target 'MyApp' do
  pod 'Alamofire', '~> 5.9'
  pod 'Firebase/Crashlytics', '~> 11.0'

  target 'MyAppTests' do
    inherit! :search_paths
    pod 'Nimble', '~> 13.0'
  end
end

target 'MyWatchExtension' do
  platform :watchos, '9.0'
  pod 'Alamofire', '~> 5.9'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
    end
  end
end

use_frameworks! podların statik kitabxanalar əvəzinə freymvork kimi kompilyasiyasını aktivləşdirir (Xcode 15+ üçün defolt davranış). :linkage => :static atributu freymvorkları məcburi olaraq statik edir və tətbiqin ölçüsünü azaldır. inhibit_all_warnings! podlardan xəbərdarlıqları söndürür — quruma jurnalının təmizliyi üçün faydalıdır. inherit! :search_paths ilə iç-içə targetlər (məsələn, testlər üçün) yalnız axtarış yollarını alır, bütün asılılıqları yenidən kompilyasiya etmir. post_install bloku bütün pod targetləri üçün quruma konfiqurasiyasını tənzimləyir — bu, vahid minimal iOS versiyası təyin etmək üçün standart nümunədir.

Podfile.lock pod install zamanı avtomatik yaradılır. O, keçidli asılılıqlar da daxil olmaqla, bütün quraşdırılmış asılılıqların dəqiq versiyalarını təsbit edir. Lock faylı depoda saxlanmalıdır — onsuz başqa maşında pod install fərqli versiyalar quraşdıra bilər. pod update PodName əmri konkret podu yeniləyərək Podfile.lock-u dəyişdirir. pod outdated daha yeni versiyaları mövcud olan podların siyahısını göstərir.

Podspec: kitabxananın yaradılması və nəşri

Podspec — CocoaPods üçün kitabxananı təsvir edən .podspec genişlənməli Ruby faylıdır. Podspec metadata (ad, versiya, müellif), mənbə kodu, asılılıqlar, sistem freymvorkları və platforma tələblərini ehtiva edir. CocoaPods reyestrdə nəşrdən əvvəl pod spec lint validasiyası ilə podspec-i yoxlayır.

ruby
Pod::Spec.new do |s|
  s.name             = 'NetworkingKit'
  s.version          = '1.2.0'
  s.summary          = 'Lightweight HTTP client for iOS'
  s.description      = 'NetworkingKit is a Swift HTTP client with async/await support, built-in caching, and automatic retry logic.'
  s.homepage         = 'https://github.com/user/NetworkingKit'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Developer' => 'dev@example.com' }
  s.source           = { :git => 'https://github.com/user/NetworkingKit.git', :tag => s.version.to_s }
  s.ios.deployment_target = '15.0'
  s.swift_version    = '5.9'
  s.source_files     = 'Sources/**/*.swift'
  s.dependency 'Alamofire', '~> 5.9'
end

s.name — reyestrdə kitabxananın unikal adı. s.version Git teqinə uyğundur (nəşr üçün vacibdir). s.source_files — mənbə faylları daxil etmək üçün glob nümunəsi. s.dependency versiya ilə digər podlardan asılılığı göstərir. s.ios.deployment_target minimal dəstəklənən iOS versiyasını təyin edir — CocoaPods layihə köhnə versiyadan istifadə edərsə avtomatik xəbərdarlıq edəcək. Şəxsi podlar üçün reyestrdə nəşr əvəzinə Podfile-də :path istifadə oluna bilər.

Kitabxananın mərkəzi Specs reyestrinə nəşri pod trunk push NetworkingKit.podspec vasitəsilə hüyata keçirilir. Əvvəlcə pod trunk register dev@example.com 'Developer' vasitəsilə qeydiyyat tələb olunur. CocoaPods podspec-in düzgünlüyünü yoxlayır və Specs deposuna pull request göndərir. Alternativ şirkətin daxili kitabxanaları üçün pod repo push şəxsi reyestridir.

Subspecs və modulluq

Subspecs kitabxananı istifadəçinin seçmə olaraq qoşa biləcəyi modullara bölməyə imkan verir. Məsələn, Firebase subspecs-dən istifadə edir: pod 'Firebase/Crashlytics' Firebase-in digər modulları olmadan yalnız Crashlytics-i qoşur. Subspec baza konfiqurasiyasını miras alır və öz source_files və asılılıqlarını əlavə edə bilər.

ƏmrFəaliyyət
pod spec lintPodspec-in düzgünlüyünün yoxlanılması
pod trunk registerCocoaPods Trunk-də qeydiyyat
pod trunk pushPodspec-in reyestrdə nəşri
pod repo pushŞəxsi reyestrdə nəşr
pod lib lintKitabxananın lokal validasiyası

CocoaPods-un quraşdırılması və konfiqurasiyası

CocoaPods RubyGems — Ruby-nin standart paket meneceri vasitəsilə quraşdırılır. macOS-da Ruby əvvəlcədən quraşdırılıb, ona görə terminalda bir əmr kifayətdir. Alternativ üsul CocoaPods-u ayrıca formula kimi quraşdıran Homebrew-dir. Qurulumdan sonra layihənin inisializasiyası əsas konfiqurasiya ilə Podfile yaradan pod init əmri ilə hüyata keçirilir. Podfile-ı asılılıqlarla doldurduqdan sonra tərtibatçı pod install işə salır — CocoaPods kitabxanaları yükləyir və iş məkanı yaradır.

ruby
# Quraşdırma CocoaPods vasitəsilə RubyGems
sudo gem install cocoapods

# Alternativ quraşdırma vasitəsilə Homebrew
brew install cocoapods

# İnisiallaşdırma Podfile layihədə
cd /path/to/Project
pod init

# Asılılıqların quraşdırılması
pod install

Əhəmiyyətli qayda: pod install-dan sonra həmişə .xcworkspace-i açın, .xcodeproj-u yox. Əgər .xcodeproj-u açsanız, Xcode podları görməyəcək və quruma link xətalarla nəticələnəcək. pod install əmri asılılıqları yalnız Podfile dəyişdikdə və ya ilk işə salınmada yükləyir. Bütün podların məcburi yenidən quraşdırılması üçün pod install --repo-update və ya pod deintegrate && pod install istifadə olunur.

Yenilənmə CocoaPods sudo gem update cocoapods və ya brew upgrade cocoapods vasitəsilə hüyata keçirilir. CocoaPods versiyası pod --version əmri ilə yoxlanılır. 1.12 versiyasından (2024) etibarən CocoaPods modulların ciddi yoxlanılması parametrləri və təkmilləşdirilmiş keçidli asılılıqların həlli ilə Xcode 15-i dəstəkləyir. mid-2025 üçün son sabit versiya Swift 6 dəstəyi və 50+ podlu layihələr üçün asılılıq qrafərinin həllinin təkmilləşdirilmiş performansı ilə 1.16-dır.

ruby
# Bütün podların ən son versiyalara yenilənməsi
pod update

# Konkret podun yenilənməsi
pod update Alamofire

# Köhnəlmiş asılılıqların yoxlanılması
pod outdated

# Silinmə CocoaPods layihədən
pod deintegrate

pod update arqumentsiz bütün podları Podfile-ə uyğun olaraq ən son uyğun versiyalara yeniləyir (~> operatorlarını nəzərə alaraq). pod outdated Podfile.lock-dakı cari versiya ilə ən son mövcud versiya arasındakı fərqi göstərir. pod deintegrate CocoaPods-u layihədən tamamilə silir — .xcworkspace, konfiqurasiya faylları və quruma parametrlərini silir. Bu, Swift Package Manager-ə miqrasiya zamanı faydalıdır.

Asılılıqların və versiyaların idarə edilməsi

Asılılıqların idarə edilməsi CocoaPods-da dörd aspekti əhatə edir: versiyaların təsbiti, konfliktlərin həlli, qurumanın optimallaşdırılması və keçidli asılılıqlarla iş. CocoaPods Podfile.lock əsasında asılılıq qrafəri qurur — layihədə hər ikisi C-dən asılı olan A və B kitabxanaları istifadə olunursa, CocoaPods hər ikisinin tələblərinə cavab verən C versiyasını tapır.

Konfliktlər iki asılılıq eyni kitabxananın uyğunsuz versiyalarını tələb etdikdə yaranır. CocoaPods ziddiyyətli tələbləri göstərən xəta bildirir. Həll yolları: asılılıqlardan birini uyğun versiyaya yeniləmək, konkret commit göstərən pod 'Lib', :git => ... istifadə etmək və ya asılılığı dəyişdirilmiş kitabxanalardan birini fork etmək. Böyük layihələr üçün hər pull request-də pod lib lint ilə CI validasiyasını konfiqurasiya etmək tövsiyə olunur.

İnkişaf etmiş idarəetmə strategiyaları

CocoaPods bir neçə inkişaf etmiş imkan təklif edir: kitabxanaların lokal inkişafı üçün :path, fork-ları qoşmaq üçün :git, inkişaf budaqlarını sınamaq üçün :branch. use_frameworks! direktivi :linkage => :static ilə son ikilik faylın ölçüsünü minimuma endirir. A/B testləri və fürşət bayraqları üçün Podfile-də Ruby şərti konstruksiyaları vasitəsilə müxtəlif versiya podları qoşula bilər.

ruby
platform :ios, '15.0'
use_frameworks!

# Mühitin təyini
is_debug = defined?(DEBUG) && DEBUG

target 'MyApp' do
  # Əsas asılılıqlar
  pod 'Alamofire', '~> 5.9'
  pod 'SnapKit', '~> 5.7'

  # İnkişaf üçün lokal kitabxana
  pod 'MyInternalLib', :path => '../MyInternalLib'

  # Debug üçün şərti asılılıq
  if is_debug
    pod 'SwiftyBeaver', '~> 2.0'
  else
    pod 'CocoaLumberjack', '~> 3.8'
  end

  # Bug düzəlişi ilə fork
  pod 'Kingfisher', :git => 'https://github.com/user/Kingfisher.git', :branch => 'fix-memory-leak'
end

abstract_target 'Pods' do
  pod 'Alamofire'
end

abstract_target konkret Xcode targetinə bağlanmadan ümumi asılılıqlar üçün virtual target yaradır. Ruby şərti konstruksiyaları Debug və Release konfiqurasiyaları üçün müxtəlif kitabxanaları qoşmağa imkan verir. Lokal kitabxana ilə :path inkişafı sürətləndirir — dəyişikliklər pod install-u yenidən işə salmadan tətbiq olunur. :branch rejimi rəsmi buraxılışdan əvvəl dəyişiklikləri sınamaq üçün faydalıdır.

CocoaPods vs Swift Package Manager vs Carthage

CocoaPods, Swift Package Manager (SPM)Carthage — iOS inkişafında üç əsas asılılıq meneceridir. Hər birinin öz memarlığı, inteqrasiya yanaşması və nəzarət səviyyəsi var. CocoaPods kitabxanaların sayına görə liderdir, SPM Xcode-da daxili dəstək sayəsində üstünlük qazanır, Carthage populyarlıq baxımından geri qalır, lakin maksimum nəzarət verir.

MeyarCocoaPodsSPMCarthage
Konfiqurasiya diliRuby DSLPackage.swift (Swift)Cartfile
Xcode ilə inteqrasiyaWorkspace vasitəsiləDaxiliƏl ilə (xcframeworks)
Kitabxanaların sayı100 000+~65 000~20 000
Keçidli asılılıqlarAvtomatikAvtomatikƏl ilə
Resurs dəstəyiBəli (resource bundles)Bəli (Resources)Xeyr
Qurulum sürətiOrtaSürətliSürətli
VersiyalaşdırmaGemfile.lockPackage.resolvedCartfile.resolved

CocoaPods maksimum kitabxana uyğunluğunun tələb olunduğu layihələr üçün seçim olaraq qalır (bir çox köhnə kitabxanalar yalnız CocoaPods vasitəsilə mövcuddur). SPM yeni layihələr üçün tövsiyə olunur — o, Xcode-a daxildir, əlavə alətlərin quraşdırılmasını tələb etmir və Apple tərəfindən dəstəklənir. Carthage nadir hallarda, əsasən Xcode konfiqurasiyasına minimal müdaxilə tələb olunan layihələrdə istifadə olunur. 2024-cü ildən etibarən Apple SPM-i fəal şəkildə inkişaf etdirir və bir çox məşhur kitabxanalar (Alamofire, Firebase, SnapKit) artıq onu CocoaPods ilə bərabər dəstəkləyir.

CocoaPods-dan SPM-ə miqrasiya pod deintegrate (CocoaPods-un silinməsi) və Xcode-da File → Add Package Dependencies vasitəsilə paketlərin əlavə edilməsi ilə hüyata keçirilir. Əsas çətinliklər: resurslu kitabxanalar (şriftlər, şəkillər, storyboard) davranışda fərqlənə bilər, CocoaPods plaginlərinin (məsələn, kod yaratma üçün) SPM-də analoqu yoxdur. CocoaPods-spesifik imkanların tələb olunduğu layihələr üçün CocoaPods-un saxlanılması tövsiyə olunur: kod generasiyası, resurs paketləri və post_install hook-ları vasitəsilə fərdi quruma mərhələləri.

Tez-tez rast gəlinən problemlər və həlli

CocoaPods — sabit alətdir, lakin tərtibatçılar vaxtaşırı tipik problemlərlə qarşılaşır. Onların əksəriyyəti Ruby versiyaları, keşləmə və ya asılılıq konfliktləri ilə bağlıdır. Aşağıda ən tez-tez rast gəlinən ssenarilər və onların həll yolları verilmişdir.

«The sandbox is not in sync with the Podfile.lock» xətasıpod install-u işə salmazdan əvvəl depoda Podfile.lock dəyişdirildikdə baş verir. Həlli: pod install və ya pod deintegrate && pod install yerinə yetirmək. CI mühitləri üçün quruma skriptinə pod install əlavə etmək tövsiyə olunur. Digər tez-tez rast gəlinən səbəb tərtibatçılar arasında CocoaPods versiyasındakı fərqdir: bütün maşınlarda pod --version yoxlayın.

Specs reyestrinin yenilənməsində xəta — adətən şəbəkə problemləri və ya köhnəlmiş Git deposu səbəbindən yaranır. Həlli: pod repo update --verbose təfürratı göstərir. Specs zədələnibsə: rm -rf ~/.cocoapods/repos/master && pod repo add master https://github.com/CocoaPods/Specs.git. Yavaş internetdə CDN istifadə oluna bilər — CocoaPods 1.8+-dan defolt olaraq aktivdir.

Duplicate symbols xətası — bir kitabxananın iki dəfə qoşulması və ya podlar arasında simvol konflikti zamanı baş verir. Həlli: Podfile-ı təkrarlanma üçün yoxlayın, simvolları təcrid etmək üçün use_frameworks! :linkage => :static istifadə edin. Problem kitabxanadadırsa — müellifə bildirin. Bəzən Derived Data-nı təmizləmək və Xcode-u yenidən başlatmaq kömək edir.

CocoaPods Apple Silicon Mac-də quraşdırılmır — macOS-da əvvəlcədən quraşdırılmış Ruby Rosetta 2 vasitəsilə işləyir və bu, kompilyasiya xətalarına səbəb olur. Həlli: yerli ARM64 memarlığı üçün rbenv və ya asdf vasitəsilə Ruby quraşdırın. Alternativ — Homebrew istifadə edin: brew install cocoapods avtomatik olaraq ARM64 üçün kompilyasiya edir. Gems x86_64 üçün quraşdırılıbsa, arch -arm64 sudo gem install cocoapods əmri problemi həll edir.

Podların yavaş quraşdırılması — böyük layihələrdə pod install dəqiqələr çəkə bilər. Həlli: diaqnostika üçün --verbose aktivləşdirin. Specs artıq aktualdırsa --no-repo-update istifadə edin. CI serverləri üçün Pods/~/.cocoapods qovluqlarını keşləyin. CocoaPods 1.12+-da install! 'cocoapods', :parallel_download => true vasitəsilə paralel yüklənmə əlavə edilib.

ProblemSəbəbHəll
Sandbox not in syncPodfile.lock dəyişikliyipod install
Specs deposu zədələnibGit xətasıSpecs-i yenidən quraşdırın
Duplicate symbolsKitabxana konfliktiuse_frameworks! :static
Apple Silicon xətasıRosetta altında RubyHomebrew / rbenv ARM
Yavaş qurulumBöyük asılılıq qrafəriParallel download, keş

Tez-tez verilən suallar

CocoaPods nədir və iOS tərtibatçısına nə üçün lazımdır?

CocoaPods — Apple layihələri (iOS, macOS, watchOS, tvOS) üçün asılılıq meneceridir. O, üçüncü tərəf kitabxanaların yüklənməsini, konfiqurasiyasını və inteqrasiyasını avtomatlaşdırır. Faylların əl ilə köçürülməsi və kompilator bayraqlarının konfiqurasiyası əvəzinə, Podfile-a pod 'LibraryName' sətri əlavə etmək və pod install işə salmaq kifayətdir.

Podfile Podfile.lock-dan nə ilə fərqlənir?

Podfile — tərtibatçı tərəfindən yazılan konfiqurasiya faylı: orada kitabxana adları və versiya operatorları (~> 5.9, >= 2.0, dəqiq versiya) göstərilir. Podfile.lock avtomatik yaradılır və bütün quraşdırılmış asılılıqların dəqiq versiyalarını təsbit edir. Podfile.lock Git-də saxlanmalıdır — bu, komandanın bütün üzvlərinin eyni versiyalardan istifadə etməsini təmin edir.

CocoaPods-dan Swift Package Manager-ə necə keçmək olar?

Layihə qovluğundan terminalda pod deintegrate yerinə yetirin — CocoaPods .xcworkspace, konfiqurasiya faylları və quruma parametrlərini siləcək. Sonra .xcodeproj-u Xcode-da açın, File → Add Package Dependencies bölməsinə keçin və lazımi paketləri əlavə edin. SPM əlavə quraşdırma tələb etməyən daxili Apple həllidir.

Bir layihədə CocoaPods və Swift Package Manager birlikdə istifadə oluna bilərmi?

Bəli, CocoaPods və SPM bir layihədə birlikdə mövcud ola bilər. CocoaPods asılılıqların bir hissəsini .xcworkspace vasitəsilə idarə edir, SPM — Xcode-un Package Dependencies bölməsi vasitəsilə. Lakin keçidli asılılıq konfliktləri mümkündür: hər iki sistem eyni kitabxananın müxtəlif versiyalarını qoşmağa çalışarsa, quruma xəta verəcək. Bütün asılılıqlar üçün bir menecerdən istifadə etmək tövsiyə olunur.

Öz kitabxananızı CocoaPods vasitəsilə necə yaratmaq və nəşr etmək olar?

Kitabxananın təsviri ilə .podspec faylı yaradın. Lokal validasiya üçün pod spec lint yerinə yetirin. pod trunk register email name vasitəsilə qeydiyyatdan keçin. Spec-i pod trunk push YourLib.podspec vasitəsilə nəşr edin. CocoaPods avtomatik olaraq kitabxananızı mərkəzi Specs reyestrinə əlavə edəcək — nəşrdən sonra bütün tərtibatçılar pod 'YourLib' vasitəsilə onu əldə edə bilər.

Nəticə

  • CocoaPods — 100 000+ kitabxanası və Podfile vasitəsilə inteqrasiyası olan iOS üçün ən populyar asılılıq meneceri
  • Podfile — versiyalaşdırma, şərti qoşulma, lokal asılılıqlar və post_install hook-larını dəstəkləyən Ruby konfiqurasiyası
  • Podspecpod trunk push vasitəsilə kitabxananın reyestrdə nəşri üçün spesifikasiya faylı
  • Podfile.lock asılılıqların dəqiq versiyalarını təsbit edərək komandanın bütün maşınlarında qurumanın təkrarlana bilməsini təmin edir
  • Qurulum gem install cocoapods vasitəsilə, konfiqurasiya pod initpod install vasitəsilə hüyata keçirilir
  • CocoaPods vs SPM vs Carthage: CocoaPods kitabxana sayına görə liderdir, SPM Xcode ilə inteqrasiyaya görə, Carthage bütün parametrlərdə geri qalır
  • Tipik problemlər (sandbox sync, Specs zədələnməsi, duplicate symbols) pod install, keşin təmizlənməsi və freymvork konfiqurasiyası ilə həll olunur

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