Carthage er dependency manager fyrir iOS- og macOS-verkefni sem gerir forriturum kleift að samþætta kóðasöfn frá þriðju aðilum í forrit sín á einfaldan og skilvirkan hátt. Ólíkt öðrum verkfærum á borð við CocoaPods leggur Carthage áherslu á að vera naumhyggjulegt og lítt íþyngjandi, sem þýðir að það breytir ekki skipulagi verkefnisins og krefst aðeins einfaldrar textaskrár, Cartfile, sem telur upp dependencies. Þetta hefur gert það að vinsælum kosti meðal forritara sem vilja halda stjórn á uppsetningu verkefnisins en njóta um leið góðs af kóðasöfnum og frameworks frá þriðju aðilum.
Carthage virkar með því að byggja tvíundar-frameworks, sem síðan er hægt að samþætta beint í Xcode-verkefni. Þessi nálgun þýðir að forritarar geta notið styttri byggingartíma og straumlínulagaðra þróunarferlis. Með Carthage er auðvelt að bæta við, uppfæra og halda utan um dependencies án flókinna stillingaskráa eða óæskilegra breytinga á verkefninu. Á móti er byggðum frameworks bætt handvirkt við Xcode. Þetta gerir Carthage að góðu verkfæri fyrir þá sem vilja einfalda en öfluga lausn til umsjónar með dependencies í iOS- og macOS-þróunarverkefnum sínum.
Carthage er dreifstýrður dependency manager fyrir iOS- og macOS-verkefni. Það sækir og byggir kóðasöfn frá þriðju aðilum sem frameworks, sem forritarinn bætir síðan sjálfur við Xcode-verkefnið sitt, án þess að verkefnisskránni sé breytt sjálfkrafa. Þetta veitir fulla stjórn á skipulagi verkefnisins og getur skilað styttri byggingartíma, vegna þess að dependencies eru aðeins byggðar þegar þær eru uppfærðar. Carthage er einkum notað sem einfaldari valkostur við CocoaPods, en Swift Package Manager er innbyggð lausn Apple til pakkaumsjónar.
Meira um Carthage
Carthage er dependency manager fyrir iOS og macOS sem býður upp á einfalda og sveigjanlega leið til að samþætta kóðasöfn frá þriðju aðilum í verkefni. Ólíkt öðrum verkfærum sem breyta uppsetningu verkefnisins sjálfkrafa leggur Carthage áherslu á lágmarksuppsetningu og veitir forriturum frelsi til að halda utan um verkefni sín án óþarfa takmarkana.
Tæknilega virkar Carthage með því að byggja tvíundar-frameworks úr frumkóða, eða sækja forbyggð, sem gerir forriturum kleift að taka þessi frameworks beint með í Xcode-verkefni sín. Þetta þýðir að Carthage breytir ekki verkefnisskránum heldur býr til möppuna „Carthage/Build“ þar sem þýddu frameworks eru geymd. Þessi nálgun veitir forriturum fulla stjórn á skipulagi verkefna sinna og dependencies.
Carthage styður þrjár meginaðgerðir, sem hver býður upp á ólíka leið til að meðhöndla dependencies:
Bygging dependencies: Carthage getur sjálfkrafa byggt allar dependencies sem tilgreindar eru í „Cartfile“. Þetta gerir forriturum kleift að einbeita sér að eigin kóða á meðan Carthage sér um þýðingu ytri kóðasafna. Þessi aðgerð hentar vel verkefnum sem krefjast nokkurra kóðasafna frá þriðju aðilum.
Uppfærsla dependencies: Með einni skipun getur Carthage uppfært allar dependencies í nýjustu útgáfur sem uppfylla útgáfukröfurnar í Cartfile. Þetta auðveldar að halda kóðasöfnum uppfærðum, þar á meðal með öryggisleiðréttingum, sem er mikilvægt til að viðhalda samhæfni og öryggi.
Samþætting frameworks: Carthage býr til frameworks sem forritarinn bætir sjálfur við Xcode-verkefnið, yfirleitt undir „Frameworks, Libraries, and Embedded Content“. Þetta krefst handvirks skrefs en veitir fulla yfirsýn yfir nákvæmlega hvaða kóðasöfn eru hluti af verkefninu og auðveldar að nýta nýja eiginleika og endurbætur í kóðasöfnum frá þriðju aðilum.
Einn mesti styrkur Carthage er einfaldleiki þess og sveigjanleiki. Með því að forðast sjálfvirkar breytingar á verkefninu gerir Carthage forriturum kleift að halda stjórn á verkefnum sínum. Þetta dregur úr hættu á árekstrum í verkefnisskránni og auðveldar að samþætta nýjar dependencies án þess að raska fyrirliggjandi skipulagi verkefnisins.
Nálgun Carthage á umsjón með dependencies sparar einnig tíma í daglegu starfi. Með því að byggja dependencies aðeins þegar þeim er bætt við eða þær uppfærðar, og forðast óþarfar breytingar á verkefninu, lágmarkar Carthage þann tíma og þær auðlindir sem þarf til að viðhalda verkefni. Þetta gerir það að góðu verkfæri fyrir forritara sem vilja besta vinnuflæði sitt og einbeita sér að því að afhenda vandaðan hugbúnað.
Í framkvæmd hefur Carthage haft veruleg áhrif á það hvernig forritarar halda utan um dependencies í iOS- og macOS-verkefnum. Það hefur verið notað af bæði litlum og stórum þróunarteymum til að halda verkefnum sínum uppfærðum, öruggum og auðveldum í viðhaldi. Í dag hefur þó dregið verulega úr þróun Carthage og flest kóðasöfn miða nú fyrst og fremst á Swift Package Manager.
Í stuttu máli er Carthage verkfæri sem sameinar einfaldleika, sveigjanleika og skilvirkni í lausn sem gerir umsjón með dependencies gagnsærri bæði fyrir einstaka forritara og stór teymi. Einföld uppsetning þess og lágmarksinngrip í skipulag verkefnisins hafa gert það að gagnlegu verkfæri í forritaþróun, þar sem hraðar og öruggar samþættingar eru nauðsynlegar.
Algengar spurningar um Carthage
Hvað er Carthage og hvernig virkar það í framkvæmd?
Carthage er dreifstýrður dependency manager fyrir iOS-, macOS-, tvOS- og watchOS-verkefni skrifuð í Swift og Objective-C. Það er engin miðlæg pakkaskrá. Þess í stað vísar hver dependency beint á Git-kóðageymslu, yfirleitt á GitHub.
Dependencies eru tilgreindar í textaskrá sem heitir Cartfile í rótarmöppu verkefnisins. Þegar skipunin carthage update er keyrð finnur Carthage hentugar útgáfur, sækir frumkóðann í möppuna Carthage/Checkouts og byggir hvert kóðasafn með byggingarverkfærum Xcode sjálfs. Fullbúin frameworks eru sett í Carthage/Build.
Carthage breytir ekki verkefnisskrá Xcode. Forritarinn bætir byggðu frameworks við undir Frameworks, Libraries, and Embedded Content í viðeigandi target. Þetta veitir fulla stjórn á uppsetningu verkefnisins en krefst aðeins meiri handvirkrar vinnu en verkfæri sem samþætta sjálfkrafa.
Hvernig er Carthage sett upp og hvernig er kóðasafni bætt við?
Carthage er oftast sett upp með Homebrew með skipuninni brew install carthage. Einnig er hægt að sækja uppsetningarpakka úr útgáfum verkefnisins á GitHub.
Kóðasafni er yfirleitt bætt við í fjórum skrefum:
- Skráin
Cartfileer búin til í rótarmöppu verkefnisins með línu á borð viðgithub "Alamofire/Alamofire" ~> 5.0. - Skipunin
carthage update --use-xcframeworks --platform iOSsækir og byggir kóðasafnið. - Fullbúnu
.xcframeworkúrCarthage/Builder dregið inn í Frameworks, Libraries, and Embedded Content í target forritsins. - Fyrir kvik frameworks er Embed & Sign valið.
Virkinn ~> þýðir að nýrri útgáfur eru samþykktar svo lengi sem aðalútgáfan helst sú sama. Síðan er hægt að nota kóðasafnið í kóða með import Alamofire.
Hver er munurinn á Cartfile og Cartfile.resolved?
Cartfile lýsir því hvaða dependencies verkefnið þarf og hvaða útgáfukröfur þær verða að uppfylla, t.d. ~> 5.0, >= 2.1 eða tiltekna grein. Skránni er breytt handvirkt og hún tjáir ásetning.
Cartfile.resolved er búin til sjálfkrafa og inniheldur nákvæmar útgáfur eða commits sem raunverulega voru valin, einnig fyrir þær dependencies sem dependencies verkefnisins eru sjálfar háðar. Skráin virkar sem læsing, þannig að allir í teymi og hver byggingarþjónn fá nákvæmlega sama kóðann.
Munurinn sést í skipununum:
carthage updatefinnur nýjustu útgáfur sem passa viðCartfileog skrifar niðurstöðuna íCartfile.resolved.carthage bootstrapsækir og byggir nákvæmlega þær útgáfur sem skráðar eru íCartfile.resolved.
Báðar skrárnar ætti því að geyma í útgáfustýringu. Dependencies sem aðeins eru notaðar við þróun, svo sem prófunarkóðasöfn, er hægt að setja í Cartfile.private.
Hvernig byggir Carthage XCFrameworks og hvers vegna skiptir það máli?
Áður byggði Carthage svokölluð fat frameworks, þar sem kóðinn fyrir raunveruleg tæki og hermi var sameinaður í eina skrá með verkfærinu lipo. Þetta hætti að virka með Xcode 12, vegna þess að bæði tæki og hermar á Apple Silicon nota arm64-högunina og sama högun getur ekki komið tvisvar fyrir í einu fat framework.
Lausnin er XCFrameworks, sem Apple kynnti með Xcode 11. XCFramework er búnt með sérstakri tvíundarskrá fyrir hvern vettvang og hvert afbrigði, svo sem iOS-tæki og iOS-hermi. Frá og með Carthage 0.37 eru XCFrameworks byggð með flagginu --use-xcframeworks, t.d. carthage bootstrap --use-xcframeworks.
Niðurstaðan er sett sem .xcframework-möppur í Carthage/Build. Þeim er bætt beint við target forritsins og fyrri byggingarfasinn með carthage copy-frameworks er ekki lengur nauðsynlegur.
Hver er munurinn á Carthage, CocoaPods og Swift Package Manager?
Verkfærin þrjú leysa sama verkefnið, en á ólíkan hátt:
- Carthage er dreifstýrt og sækir dependencies beint úr þeim Git-kóðageymslum sem tilgreindar eru í
Cartfile. Kóðasöfnin eru byggð sem tvíundar-frameworks og Xcode-verkefninu er ekki breytt. Samþætting fer fram handvirkt. - CocoaPods notar miðlæga skrá yfir kóðasöfn og
Podfile. Skipuninpod installbýr til workspace og breytir uppsetningu verkefnisins, þannig að samþætting gerist sjálfkrafa en er síður gagnsæ. CocoaPods er nú í viðhaldsham. - Swift Package Manager (SPM) er eigið verkfæri Apple og er innbyggt í Xcode. Pökkum er bætt við beint í Xcode eða þeim lýst í
Package.swift, og engin aukauppsetning er nauðsynleg.
Carthage er gagnlegt þegar óskað er eftir fullri stjórn á verkefnisskránni og styttri byggingartíma, vegna þess að dependencies eru aðeins byggðar þegar þær eru uppfærðar. Fyrir ný verkefni er SPM nú mest notaði kosturinn, þar sem flest kóðasöfn styðja það.
Hvernig er hægt að halda byggingartíma með Carthage í lágmarki?
Vegna þess að Carthage byggir dependencies sjálfgefið úr frumkóða getur fyrsta byggingin tekið langan tíma. Nokkrir valkostir geta stytt tímann:
--platform iOStakmarkar bygginguna við þá vettvanga sem verkefnið notar í raun.--cache-buildssleppir dependencies sem þegar hafa verið byggðar í sömu útgáfu, þannig að aðeins breytt kóðasöfn eru endurbyggð.- Hægt er að uppfæra einstakar dependencies sérstaklega, t.d. með
carthage update Alamofire, í stað þess að uppfæra þær allar. - Mörg kóðasöfn bjóða upp á forbyggð frameworks í GitHub-útgáfum sínum, sem Carthage sækir sjálfkrafa. SDK-pakka með lokuðum kóða er hægt að tilgreina með
binaryog vefslóð á JSON-skilgreiningu.
Á byggingarþjónum er einnig hægt að geyma Carthage/Build-möppuna í skyndiminni milli keyrslna. Mörg teymi halda möppunni utan Git með .gitignore og endurskapa hana með carthage bootstrap.
Carthage fyrir byrjendur
Carthage er verkfæri sem hjálpar til við að skipuleggja og halda utan um litlu byggingareiningarnar sem forrit eru gerð úr, svokallaðar „dependencies“. Ímyndaðu þér að smíða forrit sem þarf nokkra tilbúna hluta sem aðrir hafa þegar búið til svo það virki betur. Carthage hjálpar til við að sækja þessa hluta og halda utan um þá, svo ekki þurfi að búa þá til frá grunni. Það virkar svolítið eins og bókavörður sem heldur utan um allar bækurnar sem þarf fyrir verkefni, svo höfundurinn geti einbeitt sér að eigin sögu. Það gerir þróun forrita auðveldari og hraðari, vegna þess að hægt er að endurnýta vinnu annarra og tryggja um leið að allt passi saman.