Šta je Carthage i kako može da optimizuje razvoj aplikacija?

Carthage je menadžer zavisnosti za iOS i macOS projekte koji programerima omogućava da na jednostavan i efikasan način integrišu biblioteke trećih strana u svoje aplikacije. Za razliku od drugih alata kao što je CocoaPods, Carthage teži minimalizmu i nenametljivosti, što znači da ne menja strukturu projekta i zahteva samo jednostavnu tekstualnu datoteku, Cartfile, sa spiskom zavisnosti. Zbog toga je postao popularan izbor među programerima koji žele da zadrže kontrolu nad podešavanjem projekta, a da pritom koriste biblioteke i radne okvire trećih strana.

Carthage radi tako što gradi binarne radne okvire, koji se zatim mogu integrisati direktno u Xcode projekte. Ovaj pristup znači da programeri mogu imati koristi od kraćeg vremena izgradnje i usklađenijeg procesa razvoja. Uz Carthage se zavisnosti mogu lako dodavati, ažurirati i njima upravljati bez složenih konfiguracionih datoteka ili neželjenih izmena projekta. Zauzvrat se izgrađeni radni okviri dodaju u Xcode ručno. Zbog toga je Carthage dobar alat za one koji žele jednostavno, ali moćno rešenje za upravljanje zavisnostima u svojim razvojnim projektima za iOS i macOS.

Carthage je decentralizovani menadžer zavisnosti za iOS i macOS projekte. Preuzima i gradi biblioteke trećih strana kao radne okvire, koje programer zatim sam dodaje u svoj Xcode projekat, bez automatskog menjanja datoteke projekta. To daje punu kontrolu nad strukturom projekta i može skratiti vreme izgradnje, jer se zavisnosti grade samo kada se ažuriraju. Carthage se uglavnom koristi kao jednostavnija alternativa CocoaPods alatu, dok je Swift Package Manager ugrađeno Apple rešenje za upravljanje paketima.

More about Carthage

Carthage je menadžer zavisnosti za iOS i macOS koji nudi jednostavan i fleksibilan način integrisanja biblioteka trećih strana u projekte. Za razliku od drugih alata koji automatski menjaju podešavanje projekta, Carthage teži minimalnom podešavanju i programerima daje slobodu da upravljaju svojim projektima bez nepotrebnih ograničenja.

Tehnički gledano, Carthage radi tako što gradi binarne radne okvire iz izvornog koda ili preuzima unapred izgrađene, što programerima omogućava da te radne okvire uključe direktno u svoje Xcode projekte. To znači da Carthage ne menja datoteke projekta, već generiše fasciklu „Carthage/Build“ u kojoj se čuvaju prevedeni radni okviri. Ovaj pristup programerima daje punu kontrolu nad strukturom projekta i zavisnostima.

Carthage podržava tri osnovne funkcije, od kojih svaka nudi drugačiji način rukovanja zavisnostima:

  1. Izgradnja zavisnosti: Carthage može automatski da izgradi sve zavisnosti navedene u datoteci „Cartfile“. To programerima omogućava da se usredsrede na sopstveni kod dok Carthage obavlja prevođenje spoljnih biblioteka. Ova funkcija je idealna za projekte kojima je potrebno više biblioteka trećih strana.

  2. Ažuriranje zavisnosti: Jednom komandom Carthage može da ažurira sve zavisnosti na najnovije verzije koje zadovoljavaju zahteve za verzijama u Cartfile datoteci. To olakšava održavanje biblioteka ažurnim, uključujući bezbednosne ispravke, što je važno za očuvanje kompatibilnosti i bezbednosti.

  3. Integrisanje radnih okvira: Carthage generiše radne okvire koje programer sam dodaje u Xcode projekat, obično u odeljku „Frameworks, Libraries, and Embedded Content“. To zahteva ručni korak, ali daje potpun uvid u to koje su tačno biblioteke deo projekta i olakšava korišćenje novih funkcija i poboljšanja u bibliotekama trećih strana.

Jedna od najvećih prednosti Carthage alata je njegova jednostavnost i fleksibilnost. Izbegavanjem automatizovanih izmena projekta Carthage programerima omogućava da zadrže kontrolu nad svojim projektima. To smanjuje rizik od sukoba u datoteci projekta i olakšava integrisanje novih zavisnosti bez narušavanja postojećih struktura projekta.

Pristup upravljanju zavisnostima u Carthage alatu štedi vreme i u svakodnevnom radu. Time što gradi zavisnosti samo kada se dodaju ili ažuriraju i izbegava nepotrebne izmene projekta, Carthage svodi vreme i resurse potrebne za održavanje projekta na najmanju meru. Zbog toga je dobar alat za programere koji žele da optimizuju svoje tokove rada i usredsrede se na isporuku visokokvalitetnog softvera.

U praksi je Carthage imao značajan uticaj na način na koji programeri upravljaju zavisnostima u iOS i macOS projektima. Koristili su ga i mali i veliki razvojni timovi kako bi svoje projekte održavali ažurnim, bezbednim i lakim za održavanje. Danas je, međutim, razvoj Carthage alata znatno usporen, a većina biblioteka sada prvenstveno cilja Swift Package Manager.

Ukratko, Carthage je alat koji spaja jednostavnost, fleksibilnost i efikasnost u rešenje koje upravljanje zavisnostima čini transparentnijim i za pojedinačne programere i za velike timove. Njegovo jednostavno podešavanje i minimalno zadiranje u strukturu projekta učinili su ga korisnim alatom u razvoju aplikacija, u kojem su brze i bezbedne integracije neophodne.

Frequently asked questions about Carthage

Šta je Carthage i kako funkcioniše u praksi?

Carthage je decentralizovani menadžer zavisnosti za iOS, macOS, tvOS i watchOS projekte napisane na Swift i Objective-C jezicima. Ne postoji centralni registar paketa. Umesto toga, svaka zavisnost upućuje direktno na Git repozitorijum, obično na GitHub platformi.

Zavisnosti se navode u tekstualnoj datoteci pod nazivom Cartfile u korenskoj fascikli projekta. Kada se pokrene komanda carthage update, Carthage pronalazi odgovarajuće verzije, preuzima izvorni kod u fasciklu Carthage/Checkouts i gradi svaku biblioteku sopstvenim alatima za izgradnju Xcode okruženja. Gotovi radni okviri smeštaju se u Carthage/Build.

Carthage ne menja datoteku Xcode projekta. Programer dodaje izgrađene radne okvire u odeljak Frameworks, Libraries, and Embedded Content u odgovarajućem cilju. To daje punu kontrolu nad podešavanjem projekta, ali zahteva malo više ručnog rada nego alati koji integrišu automatski.

Kako se Carthage instalira i kako se dodaje biblioteka?

Carthage se najčešće instalira pomoću Homebrew menadžera paketa komandom brew install carthage. Kao alternativa, instalacioni paket može se preuzeti iz izdanja projekta na GitHub platformi.

Biblioteka se obično dodaje u četiri koraka:

  • U korenskoj fascikli projekta pravi se datoteka Cartfile sa redom kao što je github "Alamofire/Alamofire" ~> 5.0.
  • Komanda carthage update --use-xcframeworks --platform iOS preuzima i gradi biblioteku.
  • Gotov .xcframework iz Carthage/Build prevlači se u Frameworks, Libraries, and Embedded Content u cilju aplikacije.
  • Za dinamičke radne okvire bira se Embed & Sign.

Operator ~> znači da se novije verzije prihvataju sve dok glavna verzija ostaje ista. Biblioteka se zatim može koristiti u kodu pomoću import Alamofire.

Koja je razlika između Cartfile i Cartfile.resolved datoteke?

Cartfile opisuje koje su zavisnosti projektu potrebne i koje zahteve za verzijama moraju da ispune, npr. ~> 5.0, >= 2.1 ili određenu granu. Datoteka se menja ručno i izražava nameru.

Cartfile.resolved se generiše automatski i sadrži tačne verzije ili komitove koji su zaista izabrani, uključujući i one za sopstvene zavisnosti zavisnosti. Datoteka deluje kao brava, tako da svi u timu i svaki server za izgradnju dobijaju potpuno isti kod.

Razlika se vidi u komandama:

  • carthage update pronalazi najnovije verzije koje odgovaraju datoteci Cartfile i upisuje rezultat u Cartfile.resolved.
  • carthage bootstrap preuzima i gradi tačno one verzije koje su navedene u Cartfile.resolved.

Obe datoteke stoga treba čuvati u sistemu za kontrolu verzija. Zavisnosti koje se koriste samo tokom razvoja, kao što su biblioteke za testiranje, mogu se smestiti u Cartfile.private.

Kako Carthage gradi XCFramework pakete i zašto je to važno?

Ranije je Carthage gradio takozvane debele radne okvire, u kojima je kod za fizičke uređaje i simulator bio spojen u jednu datoteku pomoću alata lipo. To je prestalo da radi sa Xcode 12 okruženjem, jer i uređaji i simulatori na Apple Silicon računarima koriste arm64 arhitekturu, a ista arhitektura ne može se dvaput pojaviti u jednom debelom radnom okviru.

Rešenje su XCFramework paketi, koje je Apple uveo sa Xcode 11 okruženjem. XCFramework je paket sa zasebnom binarnom datotekom za svaku platformu i varijantu, kao što su iOS uređaj i iOS simulator. Od verzije Carthage 0.37 XCFramework paketi se grade uz oznaku --use-xcframeworks, npr. carthage bootstrap --use-xcframeworks.

Rezultat se smešta kao fascikle .xcframework u Carthage/Build. One se dodaju direktno u cilj aplikacije, a nekadašnja faza izgradnje sa carthage copy-frameworks više nije potrebna.

Koja je razlika između Carthage, CocoaPods i Swift Package Manager alata?

Ova tri alata rešavaju isti zadatak, ali na različite načine:

  • Carthage je decentralizovan i preuzima zavisnosti direktno iz Git repozitorijuma navedenih u datoteci Cartfile. Biblioteke se grade kao binarni radni okviri, a Xcode projekat se ne menja. Integracija se obavlja ručno.
  • CocoaPods koristi centralni registar biblioteka i datoteku Podfile. Komanda pod install pravi radni prostor i menja podešavanje projekta, pa se integracija odvija automatski, ali je manje transparentna. CocoaPods je sada u režimu održavanja.
  • Swift Package Manager (SPM) je sopstveni Apple alat i ugrađen je u Xcode. Paketi se dodaju direktno u Xcode okruženju ili se opisuju u datoteci Package.swift, a dodatna instalacija nije potrebna.

Carthage je koristan kada se žele potpuna kontrola nad datotekom projekta i kraće vreme izgradnje, jer se zavisnosti grade samo kada se ažuriraju. Za nove projekte SPM je sada najčešće korišćen izbor, jer ga većina biblioteka podržava.

Kako se vreme izgradnje sa Carthage alatom može održati niskim?

Pošto Carthage podrazumevano gradi zavisnosti iz izvornog koda, prva izgradnja može dugo trajati. Nekoliko opcija može skratiti to vreme:

  • --platform iOS ograničava izgradnju na platforme koje projekat zaista koristi.
  • --cache-builds preskače zavisnosti koje su već izgrađene u istoj verziji, tako da se ponovo grade samo izmenjene biblioteke.
  • Pojedinačne zavisnosti mogu se ažurirati zasebno, npr. pomoću carthage update Alamofire, umesto da se ažuriraju sve.
  • Mnoge biblioteke nude unapred izgrađene radne okvire u svojim izdanjima na GitHub platformi, koje Carthage automatski preuzima. Komercijalni SDK paketi zatvorenog koda mogu se navesti pomoću binary i URL adrese JSON specifikacije.

Na serverima za izgradnju fascikla Carthage/Build može se i keširati između izvršavanja. Mnogi timovi drže ovu fasciklu van Git sistema putem datoteke .gitignore i ponovo je prave komandom carthage bootstrap.

Carthage for dummies

Carthage je alat koji pomaže da se organizuju i održavaju mali gradivni blokovi od kojih se aplikacije sastoje, takozvane „zavisnosti“. Zamislite da pravite aplikaciju kojoj su potrebni neki gotovi delovi koje su drugi već napravili da bi bolje radila. Carthage pomaže da se ti delovi preuzmu i prate, tako da ne moraju da se prave od nule. Radi pomalo kao bibliotekar koji vodi računa o svim knjigama potrebnim za neki projekat, kako bi pisac mogao da se usredsredi na sopstvenu priču. Razvoj aplikacija čini lakšim i bržim, jer se rad drugih ljudi može ponovo iskoristiti, uz staranje da se sve uklapa.

Оставите коментар