Carthage: bu nima, markazlashtirilmagan bog'liqlik menejeri

Muallif: IT Sectr Nashr etilgan: 2026-02-12 O'qish vaqti: 8 daq

Carthage — Cocoa-loyihalari (iOS, macOS, watchOS, tvOS) uchun markazlashtirilmagan bog'liqlik menejeri bo'lib, manba kodidan ikkilik freymvorklarni yig'adi. CocoaPods-dan farqli o'laroq, Carthage loyihani avtomatik ravishda o'zgartirmaydi — dasturchi yig'ilgan freymvorklarni Xcode-ga o'zi qo'shadi. Carthage Swift-da yozilgan, bog'liqliklarni tavsiflash uchun Cartfile dan foydalanadi va parallel yig'ishni qo'llab-quvvatlaydi. GitHub-repozitoriy ma'lumotlariga ko'ra, Carthage 15 000 dan ortiq yulduz to'plagan va Xcode konfiguratsiyasiga minimal aralashuv talab qilinadigan loyihalar uchun tor, ammo talab qilinadigan vosita bo'lib qolmoqda.

Asosiy fikrlar

  • Carthage — markazlashtirilmagan bog'liqlik menejeri: markaziy reestr yo'q, kutubxonalar to'g'ridan-to'g'ri Git-repozitoriylardan ulanadi
  • Cartfile — bog'liqliklar, ularning versiyalari va manbalari (Git, GitHub, GitLab) sanab o'tiladigan konfiguratsiya fayli
  • Freymvorklarni yig'ish carthage bootstrap yoki carthage update buyrug'i bilan bajariladi — Carthage repozitoriylarni klonlaydi va ularni .xcframework-ga kompilatsiya qiladi
  • Xcode bilan integratsiya — qo'lda: dasturchi yig'ilgan freymvorklarni General → Frameworks, Libraries, and Embedded Content-ga qo'shadi
  • Cartfile.resolved Podfile.lock-ga o'xshash tarzda yig'ishning takrorlanuvchanligini ta'minlab, aniq bog'liqlik versiyalarini belgilaydi
  • Carthage vs CocoaPods vs SPM: Carthage maksimal nazorat beradi, lekin ko'proq qo'l mehnatini talab qiladi; CocoaPods hamma narsani avtomatlashtiradi; SPM Xcode-ga o'rnatilgan

Carthage nima?

Carthage — 2014-yilda Swift hamjamiyatining dasturchilari tomonidan yaratilgan markazlashtirilmagan arxitekturaga ega bog'liqlik menejeri. Carthage markaziy spetsifikatsiya reestridan foydalanmaydi — har bir kutubxona to'g'ridan-to'g'ri Git-repozitoridan URL yoki GitHub-dagi nom orqali ulanadi. Carthage manba kodini yuklaydi, uni ikkilik freymvorkka (.xcframework yoki .framework) yig'adi va dasturchiga Xcode-loyihasiga qo'lda integratsiya qilish uchun tayyor artefaktni taqdim etadi.

Carthage arxitekturasi uch komponentni o'z ichiga oladi: carthage CLI vositasi, Cartfile konfiguratsiya fayli va yig'ilgan freymvorklar bilan Carthage/Build/ katalogi. Carthage-ning CocoaPods-dan prinsipial farqi — .xcodeproj-ning avtomatik o'zgartirilmasligi. Carthage .xcworkspace yaratmaydi, kompilyator bayroqlarini sozlamaydi va Pods.xcconfig yaratmaydi. Dasturchi Xcode orqali freymvorklarni loyihaga o'zi qo'shadi, bu esa integratsiya jarayoni ustidan to'liq nazorat beradi.

Carthage bog'liqliklarning parallel yig'ilishidan foydalanadi, bu esa ko'p yadroli protsessorlarda jarayonni sezilarli darajada tezlashtiradi. Har bir bog'liqlik alohida target sifatida yig'iladi va Carthage tranzitiv bog'liqliklar grafigini avtomatik hal qilib, ularni to'g'ri tartibda yig'adi. Hamjamiyat benchmarklariga ko'ra, Carthage 15–20 bog'liqlikni zamonaviy Mac-larda o'rtacha 30–60 soniyada yig'adi, bu ko'p sonli kutubxonalarga ega loyihalar uchun CocoaPods-dan tezroq. Carthage barcha Apple platformalarini qo'llab-quvvatlaydi: iOS, macOS, watchOS va tvOS, 0.38+ versiyasidan esa simulyatorlar va Apple Silicon qurilmalarini qo'llab-quvvatlash uchun universal .xcframework yig'ishni qo'llab-quvvatlaydi.

Carthage qanday ishlaydi

Carthage har bir bog'liqlikning Git-repozitoriyasini klonlaydi, ko'rsatilgan versiyaga (teg, commit yoki branch) o'tadi va freymvorkni yig'ish uchun xcodebuild-ni ishga tushiradi. Carthage Xcode-loyihasining turini (freymvork, dynamic freymvork, statik kutubxona) yig'ish sxemasi bo'yicha avtomatik aniqlaydi. Agar loyiha bir nechta sxemalarni o'z ichiga olsa, Carthage standart sxemadan (alfavit tartibida birinchi) foydalanadi. Yig'ishdan so'ng, Carthage tayyor freymvorkni Carthage/Build/-ga nusxalaydi va aniq versiyalarni belgilaydigan Cartfile.resolved faylini yaratadi. Carthage yig'ilgan freymvorklarni keshlashni qo'llab-quvvatlaydi — bog'liqliklar o'zgarmagan holda qayta yig'ish bajarilmaydi.

Carthage-dagi tranzitiv bog'liqliklar Cartfile.resolved orqali boshqariladi: Carthage barcha kerakli bog'liqliklarning grafigini quradi va ularni to'g'ri tartibda yig'adi. Agar ikki kutubxona bir xil uchinchi tomon kutubxonasiga bog'liq bo'lsa, Carthage uni bir marta yig'adi va ikkalasi uchun ishlatadi. Carthage yig'ish xatolari haqida aniq target va sababni ko'rsatib xabar beradi — bu muammolarni diagnostika qilishni osonlashtiradi.

Cartfile: tuzilishi, sintaksisi va misollar

Cartfile — Ruby tilida (Cartfile formati) Carthage loyihasining bog'liqliklarini belgilaydigan konfiguratsiya fayli. Cartfile loyihaning ildizida .xcodeproj yonida joylashgan. Cartfile-ning har bir qatori bitta bog'liqlikni tavsiflaydi: manba (Git-URL, GitHub-repozitoriy) va versiya. Sintaksis versiyalarni teglar, commitlar va branchlar orqali belgilashni qo'llab-quvvatlaydi.

ruby
# Asosiy bog'liqliklar Carthage
github "Alamofire/Alamofire" ~> 5.9
github "SnapKit/SnapKit" ~> 5.7
github "onevcat/Kingfisher" == 8.0.0

github "Owner/Repo" direktivi — GitHub-repozitoriylar uchun qisqartirilgan shakl. Carthage avtomatik ravishda https://github.com/Owner/Repo.git ko'rinishida URL yaratadi. GitLab, Bitbucket va boshqa Git-xostinglar uchun to'liq URL ishlatiladi: git "https://gitlab.com/owner/repo.git". Versiya operatorlari: ~> 5.9 (5.9 dan 6.0 gacha istalgan versiya, 6.0 dan tashqari), == 8.0.0 (aniq versiya), >= 1.0 (minimal versiya). Muayyan commit-ni github "owner/repo" "abc1234" orqali ulash mumkin.

Cartfile-ning to'liq namunasi

Carthage turli konfiguratsiyalar uchun bir nechta kataloglarni qo'llab-quvvatlaydi: Cartfile(asosiy), Cartfile.private (nashr qilinmaydigan ichki bog'liqliklar uchun) va Cartfile.resolved (avtomatik yaratiladi). Xususiy bog'liqliklar faqat Development yig'ilishida ishlatiladigan kutubxonalar, masalan test freymvorklari uchun foydalidir.

ruby
# Cartfile — asosiy bog'liqliklar
github "Alamofire/Alamofire" ~> 5.9
github "SwiftyJSON/SwiftyJSON" ~> 4.0
github "realm/realm-swift" ~> 10.0

# To'liq URL uchun GitLab
git "https://gitlab.com/company/internal-lib.git" == 2.1.1

# Ishlab chiqish branchi
github "marmelroy/PhoneNumberKit" "development"

github va git — Cartfile-dagi ikki turdagi manba. Birinchisi faqat GitHub uchun mo'ljallangan va avtomatik URL yaratadi. Ikkinchisi — to'liq URL bilan istalgan ochiq yoki xususiy Git-repozitoriylar uchun. Versiya teg (== 2.1.1), semantik diapazon (~> 5.9), branch nomi ("development") yoki commit xeshi ("a1b2c3d") bilan ko'rsatilishi mumkin. Semantik diapazonlardan (~>) foydalanish SemVer-ga amal qiladigan bog'liqliklar uchun tavsiya etiladi — bu yangilashda buzuvchi o'zgarishlardan himoya qiladi.

Cartfile.resolved carthage update-dan keyin avtomatik yaratiladi. U barcha o'rnatilgan bog'liqliklarning, shu jumladan tranzitivlarning aniq versiyalarini belgilaydi. Fayl Git-da saqlanishi kerak — usiz boshqa mashinada carthage bootstrap buyrug'i kutubxonalarni bir xil qoidalar bo'yicha yig'adi, lekin versiyalar farq qilishi mumkin. carthage outdated yangi versiyalari mavjud bo'lgan eskirgan bog'liqliklar ro'yxatini ko'rsatadi.

Carthage-ni o'rnatish va sozlash

Carthage Homebrew — macOS uchun standart paket menejeri orqali o'rnatiladi. Muqobil usullar: GitHub-dan tayyor .pkg o'rnatish dasturidan o'rnatish yoki manba kodidan yig'ish. Carthage Xcode Command Line Tools (shu jumladan xcodebuild) talab qiladi, Apple Silicon Mac-da esa ba'zi eski bog'liqliklar uchun Rosetta 2 talab qilinishi mumkin.

bash
# O'rnatish Carthage orqali Homebrew
brew install carthage

# Versiyani tekshirish
carthage version

# .pkg dan o'rnatish (agar Homebrew mavjud bo'lmasa)
# Yuklab oling: Carthage.pkg ni GitHub Releases va qo'lda o'rnating

O'rnatishdan so'ng, Carthage loyihasini ishga tushirish loyihaning ildizida Cartfile yaratish bilan boshlanadi. Carthage init buyrug'iga ega emas — fayl matn muharririda qo'lda yaratiladi. Cartfile-ni bog'liqliklar bilan to'ldirgandan so'ng, dasturchi carthage bootstrap (agar Cartfile.resolved allaqachon mavjud bo'lsa) yoki carthage update (dastlabki o'rnatish yoki yangilash) ni ishga tushiradi. Carthage repozitoriylarni klonlaydi, freymvorklarni yig'adi va ularni Carthage/Build/-ga joylashtiradi.

Carthage-ni yangilash brew upgrade carthage orqali amalga oshiriladi. Versiya carthage version buyrug'i bilan tekshiriladi. 2025 yil o'rtalaridagi so'nggi barqaror versiya — 0.40, standart .xcframework qo'llab-quvvatlashi, yaxshilangan parallel yig'ish va Swift 6-ni to'liq qo'llab-quvvatlash bilan. 0.39 versiyasidan boshlab Carthage moslik ko'prigisiz eskirgan .framework-larni yig'ishni to'xtatdi — --use-xcframeworks-ni aniq ko'rsatish tavsiya etiladi.

bash
# Yangilash Carthage orqali Homebrew
brew upgrade carthage

# Muayyan versiyani o'rnatish
brew install carthage@0.39

# To'liq qayta o'rnatish
brew uninstall carthage && brew install carthage

Diqqat: Carthage .xcworkspace yaratmaydi va .xcodeproj-ni o'zgartirmaydi. CocoaPods-dan farqli o'laroq, Carthage Xcode konfiguratsiyasi ustidan to'liq nazoratni dasturchiga qoldiradi. Bu shuni anglatadiki, bog'liqliklarni o'rnatgandan so'ng freymvorklarni Xcode-ga qo'lda qo'shish kerak (qarang «Carthage freymvorklarini Xcode-ga integratsiya qilish» bo'limi). Carthage shuningdek har bir bog'liqlikning freymvork targetiga ega Xcode-loyihasi yoki workspace-ni o'z ichiga olishini talab qiladi — aks holda yig'ish xato bilan tugaydi.

Freymvorklarni yig'ish: bootstrap va update

Carthage bog'liqliklar bilan ishlash uchun uchta asosiy buyruqni taklif qiladi: bootstrap, update va build. carthage bootstrap mavjud Cartfile.resolved-dan bog'liqliklarni yig'adi — CI muhitlari va loyihaga qo'shilgan dasturchilar uchun tavsiya etiladi. carthage update Cartfile.resolved-ni eng so'nggi versiyalarga (Cartfile cheklovlarini hisobga olgan holda) yangilaydi va yig'ishni bajaradi. carthage build versiyalarni saqlamasdan barcha ko'rsatilgan bog'liqliklarni yig'adi.

bash
# Dastlabki o'rnatish (versiyalarni yangilaydi)
carthage update --use-xcframeworks --platform iOS

# Belgilangan versiyalar bo'yicha qayta yig'ish
carthage bootstrap --use-xcframeworks --platform iOS

# Faqat bitta bog'liqlikni yig'ish
carthage build Alamofire --platform iOS

--use-xcframeworks bayrog'i Carthage-ga eskirgan .framework o'rniga universal .xcframework yig'ishni ko'rsatadi. Bu ham simulyator, ham haqiqiy qurilma, shuningdek Apple Silicon Mac-ni qo'shimcha skriptlarsiz qo'llab-quvvatlashni ta'minlaydi. --platform iOS bayrog'i yig'ishni faqat iOS platformasi bilan cheklaydi — bu, ayniqsa loyihada ko'p platformali kutubxonalar ko'rsatilgan bo'lsa, jarayonni sezilarli darajada tezlashtiradi.

Carthage --cache-builds bayrog'i orqali parallel yig'ishni qo'llab-quvvatlaydi, u allaqachon yig'ilgan freymvorklarni keshlaydi. Qayta yig'ishda Carthage Git commit xeshini tekshiradi va agar kod o'zgarmagan bo'lsa, kompilatsiyani o'tkazib yuboradi. CI serverlari uchun Carthage/Build/ va ~/Library/Caches/carthage/ kataloglarini keshlash tavsiya etiladi. Carthage shuningdek batafsil loglash uchun --verbose va manba kodidan majburiy yig'ish uchun --no-use-binaries-ni qo'llab-quvvatlaydi (agar dasturchi oldindan yig'ilgan binarlarga ishonmasa).

BuyruqHarakat
carthage updateCartfile.resolved-ni yangilaydi va barcha freymvorklarni yig'adi
carthage bootstrapMavjud Cartfile.resolved bo'yicha yangilamasdan freymvorklarni yig'adi
carthage buildVersiyalarni belgilamasdan ko'rsatilgan bog'liqliklarni yig'adi
carthage outdatedYangilanishlari mavjud bo'lgan bog'liqliklar ro'yxatini ko'rsatadi
carthage checkoutFaqat repozitoriylarni klonlaydi, yig'maydi

Carthage freymvorklarini Xcode-ga integratsiya qilish

Integratsiya Carthage freymvorklarini Xcode-ga qo'lda to'rt bosqichda amalga oshiriladi. carthage update yoki bootstrap bajarilgandan so'ng barcha yig'ilgan freymvorklar Carthage/Build/iOS/ (yoki tegishli platforma) da joylashadi. Dasturchi Xcode loyihasini ochadi, ilova targetini tanlaydi va freymvorklarni General → Frameworks, Libraries, and Embedded Content-ga qo'shadi. Ish vaqti freymvorklari (dinamik kutubxonalar) uchun «Embed & Sign» ni tanlash kerak — aks holda ilova ishga tushirilganda «dyld: Library not loaded» xatosi bilan ishdan chiqadi.

Carthage statik kutubxonalar uchun soddaroq ishlaydi — ular embed bosqichini talab qilmaydi, chunki to'g'ridan-to'g'ri ilonaning bajariladigan fayliga bog'lanadi. Biroq, Carthage standart bo'yicha dinamik freymvorklarni yig'adi (aniq sozlangan statik kutubxonalardan tashqari). Ilova hajmini minimallashtirish muhim bo'lgan loyihalar uchun Xcode sozlamalari orqali statik bog'lashdan foydalanish tavsiya etiladi.

Qo'shimcha qadam — Build Phase → Run Script-ga Input Files qo'shish. Carthage yig'ilgan freymvorkdan simulyator artefaktlarini olib tashlash uchun skriptni talab qiladi (strip simulator architectures). Ushbu skript App Store yig'ilishlari uchun zarur:

bash
# Run Script uchun App Store (strip simulator architectures)
FRAMEWORKS_DIR="${SRCROOT}/Carthage/Build/iOS"
for framework in "$FRAMEWORKS_DIR"/*.framework; do
  bash "$BUILD_DIR/src/scripts/strip-framework.sh" "$framework"
done

Carthage .xcworkspace dan foydalanishni talab qilmaydi — barcha bog'liqliklar allaqachon ikkilik freymvorklarga yig'ilgan. Carthage CocoaPods-dan farqli o'laroq to'g'ridan-to'g'ri .xcodeproj bilan ishlaydi, workspace yaratmaydi. Bu versiya nazorati va CI sozlamasini soddalashtiradi, chunki Carthage bog'liqliklari Xcode loyihasi konfiguratsiyasini o'zgartirmaydi. Yagona o'zgarish — .pbxproj-da qayd etiladigan freymvorklarni target-ga qo'shish.

BosqichHarakat
1carthage update --use-xcframeworks bajarilsin
2Freymvorklarni Carthage/Build/-dan General → Frameworks-ga sudrab olib boring
3Dinamik freymvorklar uchun Embed & Sign o'rnating
4Simulyator arxitekturalarini olib tashlash uchun Run Script Phase qo'shing
5Loyihani yig'ing — freymvorklar avtomatik bog'lanishi kerak

Carthage vs CocoaPods vs Swift Package Manager

Carthage, CocoaPods va Swift Package Manager (SPM) — iOS dasturlashdagi uchta asosiy bog'liqlik menejeri. Carthage markazlashtirilmagan yondashuvi bilan ajralib turadi, CocoaPods markazlashtirilgan reestr taklif qiladi, SPM — Apple-dan o'rnatilgan yechim. Ular orasidagi tanlov loyiha talablariga, jamoa hajmiga va kerakli avtomatlashtirish darajasiga bog'liq.

MezonCarthageCocoaPodsSPM
ArxitekturaMarkazlashtirilmaganMarkazlashtirilgan reestrXcode-ga o'rnatilgan
Konfiguratsiya tiliCartfile (Ruby-ga o'xshash)Podfile (Ruby DSL)Package.swift (Swift)
Xcode bilan integratsiyaQo'lda (drag & drop)Workspace orqaliO'rnatilgan
Tranzitiv bog'liqliklarAvtomatikAvtomatikAvtomatik
Kutubxona reestriYo'q (Git-repozitoriylar)100 000+ Specs-da~65 000
Resurslarni qo'llab-quvvatlashYo'qHa (resource bundles)Ha (Resources)
Yig'ish tezligiTez (parallel)O'rtachaTez
Integratsiya nazoratiTo'liqAvtomatikAvtomatik

Carthage Xcode konfiguratsiyasiga minimal aralashuv va integratsiya jarayoni ustidan to'liq nazorat talab qilinadigan loyihalar uchun tanlanadi. Carthage ochiq kutubxonalar va freymvorklar uchun ideal, bunda muallif foydalanuvchilarga bog'liqliklarni o'zlari yig'ish imkoniyatini berishni xohlaydi. Carthage shuningdek UNIX falsafasini qadrlaydigan dasturchilar hamjamiyatida mashhur: har bir vosita bitta ishni yaxshi bajaradi. CocoaPods o'nlab bog'liqliklarga ega korporativ loyihalar uchun standart bo'lib qolmoqda, bunda avtomatlashtirish muhim. SPM — Xcode-ga o'rnatilgani va Apple tomonidan faol rivojlantirilayotgani uchun yangi loyihalar uchun tanlov.

Migratsiya menejerlar o'rtasida turlicha yondashuvni talab qiladi. Carthage → SPM: freymvorklarni Xcode-dan olib tashlang, Cartfile-ni o'chiring va File → Add Package Dependencies orqali Package Dependencies qo'shing. Carthage → CocoaPods: Carthage freymvorklarini olib tashlang, Podfile yarating, bog'liqliklarni qo'shing va pod init && pod install bajarilsin. Carthage-dan CocoaPods yoki SPM-ga migratsiyada freymvorklarni qo'lda yangilash zarurati yo'qoladi — barcha bog'liqliklar bitta buyruq bilan yangilanadi. Carthage vendor lock-in dan qochish va bog'liqliklarni yig'ish shaffofligini saqlash muhim bo'lgan loyihalar uchun dolzarb bo'lib qolmoqda.

Umumiy muammolar va ularni hal qilish

Carthage — barqaror vosita, ammo dasturchilar vaqti-vaqti bilan odatiy muammolarga, ayniqsa CI serverlarida yig'ish, Xcode-ni yangilash yoki Swift versiyalarini o'zgartirishda duch kelishadi. Aksariyat muammolar keshni tozalash, --use-xcframeworks-ni to'g'ri sozlash va minimal iOS versiyasining muvofiqligini tekshirish bilan hal qilinadi.

«The file manager returned an error» xatosi — Carthage keshi buzilganda yoki fayl huquqlari ziddiyatida yuzaga keladi. Yechim: rm -rf ~/Library/Caches/carthage buyrug'i bilan keshni o'chiring va carthage bootstrap-ni qayta ishga tushiring. Loyihadagi Carthage/ katalogini o'chirish va qayta yig'ish ham yordam beradi. CI serverlarida Carthage keshi faqat Cartfile.resolved o'zgarganda yangilanishi kerak.

«No such module» xatosi — freymvork Xcode-da topilmadi, garchi Carthage yig'ilishi muvaffaqiyatli yakunlangan bo'lsa. Yechim: General → Frameworks, Libraries, and Embedded Content-da freymvork yo'lini tekshiring. Freymvork Carthage/Build/iOS/-da bo'lishi kerak. .xcframework to'g'ri qo'shilganligiga ishonch hosil qiling (qaytadan sudrab oling). Dinamik freymvorklar uchun Embed & Sign-ni tekshiring. Agar xato davom etsa — Build Settings-ga FRAMEWORK_SEARCH_PATHS qo'shing.

Swift mos kelmasligi sababli yig'ish xatosi — kutubxona loyihadan farqli Swift versiyasi uchun yig'ilgan. Yechim: bir xil Swift versiyasi bilan manba kodidan majburiy yig'ish uchun carthage update --no-use-binaries dan foydalaning. Agar kutubxona joriy versiya ostida kompilatsiya qilinmasa — Swift versiyasini ko'rsatish uchun .xcconfig dan foydalaning yoki kutubxonani fork qiling. Carthage 0.39 dan boshlab, --use-xcframeworks avtomatik ravishda to'g'ri Swift versiyasini binarga qo'shadi.

CI yig'ish muammolari — Carthage CI-da to'g'ri keshlash sozlamasini talab qiladi. Yechim: Carthage/Build/ va ~/Library/Caches/carthage/-ni keshlang. CI-da versiyalarni o'zgartirmaslik uchun update o'rniga carthage bootstrap --use-xcframeworks --platform iOS dan foydalaning. GitHub Actions uchun rasmiy Carthage action mavjud. Jenkins uchun — CarthageBuild plagini. Carthage GUI-siz macOS-da ishdan chiqishi mumkin — yechim: brew install xcode-build-server o'rnating yoki -UseModernBuildSystem=NO kalitini qo'shing.

MuammoSababYechim
File manager errorBuzilgan kesh~/Library/Caches/carthage/-ni tozalang
No such moduleFreymvork Xcode-ga qo'shilmaganTarget-dagi Freymvorklarni tekshiring
Swift mos kelmasligiTurli Swift versiyalari--no-use-binaries yoki yangi Carthage versiyasi
CI-da xatoKesh yoki GUI yo'qCarthage/Build/ keshlashni sozlang
Kutubxona yig'ilmaydiKutubxonada Xcode loyihasi yo'qRepozitoriy tuzilishini tekshiring

Tez-tez beriladigan savollar

Carthage nima va u CocoaPods-dan qanday farq qiladi?

Carthage — Apple platformalari uchun markazlashtirilmagan bog'liqlik menejeri. CocoaPods-dan farqli o'laroq, Carthage markaziy kutubxona reestridan foydalanmaydi, Xcode loyihasini avtomatik o'zgartirmaydi va .xcworkspace yaratmaydi. Carthage bog'liqliklarni ikkilik freymvorklarga yig'adi, dasturchi esa ularni Xcode-ga qo'lda qo'shadi. CocoaPods esa butun jarayonni Podfile orqali avtomatlashtiradi.

Carthage-ni macOS-ga qanday o'rnatish mumkin?

Carthage Homebrew orqali o'rnatiladi: brew install carthage. Shu bilan bir qatorda — GitHub Releases-dan Carthage.pkg ni yuklab oling yoki manba kodidan yig'ing. O'rnatishdan so'ng versiyani tekshiring: carthage version. Carthage Xcode Command Line Tools talab qiladi. Apple Silicon Mac-da qo'shimcha ravishda Rosetta 2 talab qilinishi mumkin.

Cartfile Cartfile.resolved-dan qanday farq qiladi?

Cartfile — dasturchi yozadigan konfiguratsiya fayli: unda kutubxona nomlari va versiya operatorlari (~> 5.9, == 8.0.0, branch nomi) ko'rsatiladi. Cartfile.resolved carthage update vaqtida avtomatik yaratiladi va barcha o'rnatilgan bog'liqliklarning aniq versiyalarini belgilaydi. Cartfile.resolved Git-da saqlanishi kerak — u barcha mashinalarda yig'ishning takrorlanuvchanligini kafolatlaydi.

Nega Carthage mening Cartfile-dan kutubxonani yig'maydi?

Carthage kutubxonaning freymvork targetiga ega to'g'ri Xcode loyihasi yoki workspace-ni o'z ichiga olishini talab qiladi. Repozitoriyning mavjudligini (kalitsiz xususiy emas), to'g'ri versiya ko'rsatilganligini (teg yoki commit mavjud) va kutubxona sizning Xcode versiyangizni qo'llab-quvvatlashini tekshiring. Batafsil diagnostika uchun carthage build --verbose dan foydalaning. Agar kutubxonada freymvork targeti bo'lmasa, Carthage uni yig'a olmaydi.

2025–2026 yillarda Carthage-dan foydalanishga arziydimi?

Carthage markazlashtirilmagan bog'liqlik boshqaruvi, integratsiya ustidan to'liq nazorat va Xcode loyihasiga minimal aralashuv talab qilinadigan loyihalar uchun dolzarb bo'lib qolmoqda. Biroq, yangi loyihalarning aksariyati Swift Package Manager (SPM) ni tanlaydi — u Xcode-ga o'rnatilgan, qo'shimcha o'rnatish talab qilmaydi va Apple tomonidan faol rivojlantirilmoqda. Carthage, yig'ish pipeline-i allaqachon o'rnatilgan eski loyihalar yoki foydalanuvchilarga integratsiya usulini tanlash erkinligini berishni xohlaydigan kutubxona mualliflari uchun tavsiya etiladi.

Xulosa

  • Carthage — Git-repozitoriylarning manba kodidan freymvorklarni yig'adigan iOS, macOS, watchOS va tvOS uchun markazlashtirilmagan bog'liqlik menejeri
  • Cartfile — GitHub-repozitoriylar, ixtiyoriy Git-URL-lar va semantik versiyalashni qo'llab-quvvatlaydigan sintaksisga ega konfiguratsiya fayli
  • O'rnatish brew install carthage orqali, bog'liqliklarni yig'ish esa carthage bootstrap yoki carthage update orqali amalga oshiriladi
  • Xcode bilan integratsiya — qo'lda: freymvorklar General → Frameworks, Libraries, and Embedded Content-ga Embed & Sign opsiyasi bilan qo'shiladi
  • Cartfile.resolved CI va jamoaning barcha mashinalarida yig'ishning takrorlanuvchanligini ta'minlab, barcha bog'liqliklarning aniq versiyalarini belgilaydi
  • Odatiy muammolar (kesh, Swift mos kelmasligi, CI xatolari) keshni tozalash, --no-use-binaries bayrog'i va CI keshlash sozlamasi bilan hal qilinadi
  • Menejer tanlovi: Carthage — to'liq nazorat uchun, CocoaPods — avtomatlashtirish uchun, SPM — o'rnatilgan integratsiya bilan yangi loyihalar uchun

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing