Carthage on tarkoitettu yksinkertaisimmaksi tavaksi lisätä kehyksiä Cocoa-sovellukseesi.
Carthage rakentaa riippuvuuksiasi ja tarjoaa sinulle binääriset kehykset, mutta sinulla säilyy täysi kontrolli projektisi rakenteesta ja asetuksista. Carthage ei muuta automaattisesti projektitiedostojasi tai rakentamisasetuksiasi.
- Pikakäynnistys
- Carthagen asentaminen
- Kehysten lisääminen sovellukseen
- Aloittaminen
- Alustan rakentaminen-riippumattomat XCFrameworksit
- Projektin siirtäminen kehysnipuista XCFrameworksiin
- Alustakohtaisten kehysnippujen rakentaminen
- Jos rakennat macOS:lle
- Jos rakennat iOS:lle, tvOS, tai watchOS
- Kaikille alustoille
- (Vaihtoehtoisesti) Lisää rakentamisvaihe varoittamaan vanhentuneista riippuvuuksista
- Swift-binäärikehyksen latausyhteensopivuus
- Alustan rakentaminen-riippumattomat XCFrameworksit
- Karthagea käyttävän projektin suorittaminen
- Kehysten lisääminen yksikkötesteihin tai kehykseen
- Kehysten päivittäminen
- Experimental Resolver
- Nested riippuvuudet
- Alamoduulien käyttäminen riippuvuuksille
- Riippuvuuksien automaattinen uudelleenrakentaminen
- Rakennusten välimuistiin tallentaminen
- Bash/Zsh/Fish-viimeistely
- Aloittaminen
- Tukevat Carthage for your framework
- Jaa Xcode-skeemasi
- Resolve build failures
- Tag stable releases
- Arkistoi valmiiksi rakennetut frameworkit yhteen zip-tiedostoon
- Käytä travis-käyttöä-ci ladataksesi merkittyjä valmiiksi rakennettuja kehyksiäsi
- Rakenna staattisia kehyksiä nopeuttaaksesi sovelluksesi käynnistymisaikoja
- Julkista yhteensopivuus
- Tunnetut ongelmat
- DWARFs symboliongelma
- CarthageKit
- Eroavaisuudet Carthagen ja CocoaPods
- Lisenssi
- Pikakäynnistys
- Carthagen asentaminen
- Kehysten lisääminen sovellukseen
- Aloittaminen
- Alustariippumattomien XCFrameworks-kehysten rakentaminen (Xcode 12 ja uudemmat)
- Projektin siirtäminen kehysnipuista XCFrameworksiin
- Alustakohtaisten kehyspakettien rakentaminen (oletusarvo Xcode 11:lle ja sitä nuoremmille)
- Jos rakennat macOS:lle
- Jos rakennat iOS:lle, tvOS:lle tai watchOS:lle
- Kaikille alustoille
- (Valinnaisesti) Lisää rakennusvaihe varoittamaan vanhentuneista riippuvuuksista
- Swift-binäärikehysten latausyhteensopivuus
- Carthagea käyttävän projektin suorittaminen
- Kehysten lisääminen yksikkötesteihin tai kehykseen
- Kehysten päivittäminen
- Experimental Resolver
- Sisäkkäiset riippuvuudet
- Alamoduulien käyttäminen riippuvuuksia varten
- Riippuvuuksien automaattinen uudelleenrakentaminen
- Rakennusten välimuistiin tallentaminen
- Bash/Zsh/Fish completion
- Carthagen tukeminen kehyksellesi
- Jaa Xcode-skeemasi
- Rakennusvirheiden ratkaiseminen
- Tag stable releases
- Arkistoi valmiiksi rakennetut kehykset yhteen zip-tiedostoon
- Käytä travis-ci:tä tunnisteellisten valmiiksi rakennettujen kehysten lataamiseen
- Rakenna staattisia kehyksiä nopeuttaaksesi sovelluksen käynnistymisaikoja
- Carthage 0.30.0 tai uudempi
- Carthage 0.29.0 tai uudempi
- Ilmoita yhteensopivuus
- Tunnettuja ongelmia
- DWARFs symbol problem
- CarthageKit
- Carthagen ja CocoaPodsin erot
- Lisenssi
Pikakäynnistys
-
Hanki Carthage ajamalla
brew install carthage
tai valitse jokin muu asennustapa -
Luo Cartfile samaan hakemistoon, jossa
.xcodeproj
tai.xcworkspace
on -
Luetteloi haluamasi riippuvaisuudet Cartfileen, esim:
github "Alamofire/Alamofire" ~> 4.7.2
-
Käynnistä
carthage update --use-xcframeworks
-
Tiedosto
Cartfile.resolved
ja hakemistoCarthage
ilmestyvät samaan hakemistoon, jossa.xcodeproj
tai.xcworkspace
on -
Vetäkää rakennetut
.xcframework
niputCarthage/Build
:stä sovelluksen Xcode-projektin ”Kehykset ja kirjastot”-osioon. -
Jos käytät Carthagea sovelluksessa, valitse ”Embed & Sign”, muussa tapauksessa ”Do Not Embed”.
Syvällistä opasta varten lue lisää kohdasta Kehyspakettien lisääminen sovellukseen
Carthagen asentaminen
Carthagen asentamiseen on useita vaihtoehtoja:
-
Installer: Lataa ja suorita
Carthage.pkg
uusimman version tiedosto ja noudata sitten näytön ohjeita. Jos asennat pkg:n CLI:n kautta, sinun on ehkä ajettava ensinsudo chown -R $(whoami) /usr/local
. -
Homebrew: Voit käyttää Homebrewia ja asentaa
carthage
-työkalun järjestelmääsi yksinkertaisesti suorittamallabrew update
jabrew install carthage
. (Huomautus: jos olet aiemmin asentanut Carthagen binääriversion, sinun tulee poistaa/Library/Frameworks/CarthageKit.framework
). -
MacPorts: Voit käyttää MacPortsia ja asentaa
carthage
-työkalun järjestelmääsi yksinkertaisesti suorittamallasudo port selfupdate
jasudo port install carthage
. (Huomautus: jos olet aiemmin asentanut Karthagon binääriversion, sinun kannattaa poistaa/Library/Frameworks/CarthageKit.framework
). -
Lähteestä: Jos haluat käyttää uusinta kehitysversiota (joka voi olla erittäin epävakaa tai yhteensopimaton), kloonaa yksinkertaisesti arkiston
master
-haara ja suoritamake install
. Vaatii Xcode 10.0:n (Swift 4.2).
Kehysten lisääminen sovellukseen
Kun Carthage on asennettu, voit aloittaa kehysten lisäämisen projektiisi. Huomaa, että Carthage tukee vain dynaamisia kehyksiä, jotka ovat käytettävissä vain iOS 8:ssa tai uudemmissa versioissa (tai missä tahansa OS X:n versiossa).
Aloittaminen
Alustariippumattomien XCFrameworks-kehysten rakentaminen (Xcode 12 ja uudemmat)
- Luo Cartfile-tiedosto, joka luettelee ne kehykset, joita haluat käyttää projektissasi.
- Aja
carthage update --use-xcframeworks
. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa jokaisen tai lataa valmiiksi käännetty XCFramework. - Sovelluskohteidesi Yleiset asetukset-välilehdellä, Frameworks, Libraries, and Embedded Content -osiossa, vedä ja pudota jokainen XCFramework, jota haluat käyttää levyllä olevasta Carthage/Build-kansiosta.
Projektin siirtäminen kehysnipuista XCFrameworksiin
Kannustamme käyttämään XCFrameworksia versiosta 0.37.0 (tammikuu 2021) alkaen ja vaadimme XCFrameworksia, kun rakennat Apple Silicon Macilla. Siirtyminen erillisistä kehysnipuista XCFrameworksiin vaatii muutamia muutoksia projektiin:
Siirtymisen vaiheet
- Poista
Carthage/Build
-kansiosi poistaaksesi kaikki olemassa olevat kehysniput. - Rakenna uusi XCFrameworks ajamalla
carthage build --use-xcframeworks
. Kaikki muut argumentit, joilla rakennat, voit antaa normaalisti. - Poista viittaukset vanhoihin kehyksiin jokaisessa kohteessasi:
- Poista viittaukset Carthage-kehyksiin kohteen Kehykset, kirjastot ja sulautettu sisältö -osiosta ja/tai sen Linkitä binääri kirjastojen kanssa -rakennusvaiheesta.
- Poista viittaukset Carthage-kehyksiin kaikista Kopioi tiedostot -rakennusvaiheista.
- Poista kohteen
carthage copy-frameworks
-rakennusvaihe, jos sellainen on.
- Lisää viittaukset XCFrameworks-kehyksiin kuhunkin kohteeseen:
- Sovelluskohteessa: Vedä ja pudota Yleiset asetukset -välilehdellä Kehykset, kirjastot ja sulautettu sisältö -osiossa jokainen käyttämäsi XCFramework levyllä olevasta Carthage/Build-kansiosta.
- Kehyskohteelle: Vedä ja pudota Build Phases (Rakennusvaiheet) -välilehdellä Link Binary with Libraries (Yhdistä binääri kirjastojen kanssa) -vaiheessa jokainen käyttämäsi XCFramework levyllä olevasta Carthage/Build-kansiosta.
Alustakohtaisten kehyspakettien rakentaminen (oletusarvo Xcode 11:lle ja sitä nuoremmille)
Xcode 12+:n yhteensopimattomuus: Moniarkkitehtuurialustoja ei tueta, kun kehysnippuja rakennetaan Xcode 12:ssa ja sitä uudemmissa versioissa. Suosittele rakentamista XCFrameworksin avulla. Jos sinun on rakennettava erillisiä kehysnippuja, käytä kiertotietona xcconfig-tiedostoa.
Jos rakennat macOS:lle
macOS-spesifiset ohjeet
- Luo Cartfile-tiedosto, jossa luetellaan kehykset, joita haluat käyttää projektissasi.
- Ajoita
carthage update --platform macOS
. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa jokaisen tai lataa valmiiksi käännetty kehys. - Sovelluskohteidesi Yleiset asetukset-välilehdellä kohdassa Sulautetut binäärit vedä ja pudota jokainen haluamasi kehys Carthage/Build-kansiosta levylle.
Lisäksi sinun täytyy kopioida virheenkorjaussymboleita virheenkorjausta ja kaatumisten raportointia varten OS X:ssä.
- Napsauta sovelluskohteesi Rakennusvaiheet-asetukset-välilehdellä +-kuvaketta ja valitse Uusi kopiointivaihe.
- Napsauta pudotusvalikosta Kohde ja valitse Tuotteiden hakemisto.
- Vedä ja pudota kunkin käyttämäsi kehyksen vastaava dSYM-tiedosto.
Jos rakennat iOS:lle, tvOS:lle tai watchOS:lle
Alustakohtaiset ohjeet
-
Luo Cartfile-tiedosto, jossa luetellaan ne kehykset, joita haluat käyttää projektissasi.
-
Aja
carthage update
. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa sitten jokaisen tai lataa valmiiksi käännetty kehys. -
Avaa sovelluskohteiden Yleiset asetukset-välilehti. Xcode 11.0:ssa ja uudemmissa versioissa vedä ja pudota ”Kehykset, kirjastot ja sulautettu sisältö” -osiossa jokainen käyttämäsi kehys levyllä olevasta Carthage/Build-kansiosta. Valitse sitten ”Embed”-osiossa ”Do Not Embed” (Älä sulauta) alasvetovalikosta jokaisen lisätyn kohteen kohdalla. Xcode 10.x:ssä ja sitä uudemmissa versioissa vedä ja pudota ”Linkitetyt kehykset ja kirjastot” -osiossa jokainen haluamasi kehys levyllä olevasta Carthage/Build-kansiosta.
-
Napsauta sovelluskohteidesi Build Phases (Rakennusvaiheet) -asetukset-välilehdellä +-kuvaketta ja valitse New Run Script Phase (Uusi komentosarjavaihe). Luo Run Script, jossa määrittelet komentotulkkisi (esim.
/bin/sh
), lisää komentotulkin alapuolella olevaan komentotulkkialueeseen seuraava sisältö:/usr/local/bin/carthage copy-frameworks
-
Luo tiedosto nimeltä
input.xcfilelist
ja tiedosto nimeltäoutput.xcfilelist
-
Lisää
input.xcfilelist
:iin haluamiesi kehysrakenteiden polut. Esimerkiksi:$(SRCROOT)/Carthage/Build/iOS/Result.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
-
Lisää kopioitujen kehysten polut tiedostoon
output.xcfilelist
. Esimerkiksi:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework
Kun tulostiedostot on määritetty tulostiedostojen rinnalle, Xcoden tarvitsee ajaa skripti vain silloin, kun tulostiedostot ovat muuttuneet tai kun tulostiedostot puuttuvat. Tämä tarkoittaa, että likainen rakentaminen on nopeampaa, kun et ole rakentanut kehyksiä uudelleen Karthagon avulla.
-
Lisää
input.xcfilelist
Carthagen suoritusskriptivaiheen ”Input File Lists” -osioon -
Lisää
output.xcfilelist
Carthagen suoritusskriptivaiheen ”Output File Lists” -osioon
Tämä skripti kiertää universaalien binääritiedostojen laukaiseman App Store -lähetysbugin, ja se huolehtii siitä, että tarpeelliset bittitiedostoon liittyvät tiedostot ja dSYM:t kopioidaan arkistoinnin yhteydessä.
Kun virheenkorjaustiedot on kopioitu rakennettujen tuotteiden hakemistoon, Xcode pystyy symboloimaan pinojäljen aina kun pysähdyt pysäytyskohtaan. Näin voit myös astua kolmannen osapuolen koodin läpi debuggerissa.
Kun arkistoit sovelluksesi App Storeen tai TestFlightiin lähettämistä varten, Xcode kopioi nämä tiedostot myös sovelluksesi .xcarchive
bundlen dSYMs-alihakemistoon.
Kaikille alustoille
Matkan varrella Carthage on luonut joitakin build-artefakteja. Tärkein näistä on Cartfile.resolved-tiedosto, jossa luetellaan kunkin kehyksen todellisuudessa rakennetut versiot. Muista sitoa Cartfile.resolved-tiedosto, koska kaikki muut projektia käyttävät tarvitsevat tätä tiedostoa rakentaakseen samoja kehysversioita.
(Valinnaisesti) Lisää rakennusvaihe varoittamaan vanhentuneista riippuvuuksista
Voit lisätä Run Script -vaiheen varoittamaan automaattisesti, kun jokin riippuvuuksista on vanhentunut.
- Sovelluskohteidesi
Build Phases
-asetukset-välilehdellä napsauta+
-kuvaketta ja valitseNew Run Script Phase
. Luo Suorita skripti, jossa määrittelet komentotulkkisi (esim./bin/sh
), lisää seuraava sisältö komentotulkin alapuolella olevaan skriptialueeseen:
/usr/local/bin/carthage outdated --xcode-warnings 2>/dev/null
Swift-binäärikehysten latausyhteensopivuus
Carthage tarkistaa, että ladatut Swift-kehykset (ja sekalaiset Objective-C/Swift-kehykset) on luotu samalla versiolla Swiftistä, joka on paikallisesti käytössä. Jos versio ei vastaa toisiaan, Carthage jatkaa kehyksen rakentamista lähdekoodista. Jos kehystä ei voida rakentaa lähdekoodista, Carthage epäonnistuu.
Koska Carthage käyttää xcrun swift --version
:n tulosta paikallisen Swift-version määrittämiseen, varmista, että suoritat Carthagen komennot sillä Swift-työkaluketjulla, jota aiot käyttää. Monissa käyttötapauksissa ei tarvita mitään ylimääräistä. Jos kuitenkin esimerkiksi rakennat Swift 2.3 -projektia käyttäen Xcode 8.x:ää, yksi lähestymistapa oletusarvoisen swift
määrittämiseen carthage bootstrap
:lle on käyttää seuraavaa komentoa:
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap
Carthagea käyttävän projektin suorittaminen
Sen jälkeen kun olet suorittanut edellä mainitut vaiheet ja työntänyt muutoksesi, muiden projektin käyttäjien tarvitsee vain hakea arkisto ja suorittaa carthage bootstrap
päästäkseen alkuun lisäämiesi kehysten kanssa.
Kehysten lisääminen yksikkötesteihin tai kehykseen
Karthagon käyttäminen minkä tahansa mielivaltaisen kohteen riippuvuuksiin on melko samanlaista kuin Karthagon käyttäminen sovellukseen. Suurin ero on siinä, miten kehykset tosiasiassa asetetaan ja linkitetään Xcodessa.
Koska yksikkötestikohteista puuttuu niiden Yleiset asetukset-välilehden Linkitetyt kehykset ja kirjastot -osio, sinun on sen sijaan raahattava rakennetut kehykset Linkitä binäärit kirjastojen kanssa -rakennusvaiheeseen.
Lisää testikohteen Build Settings -välilehdellä Runpath Search Paths -kohtaan @loader_path/Frameworks
, jos se ei ole jo olemassa.
Harvinaisissa tapauksissa voit halutessasi kopioida jokaisen riippuvuuden myös build-tuotteeseen (esim, upottaa riippuvuuksia ulkoisen kehyksen sisään tai varmistaa, että riippuvuudet ovat läsnä testipaketissa). Voit tehdä tämän luomalla uuden Copy Files -rakentamisvaiheen, jossa on Frameworks-kohde, ja lisäämällä kehysviittauksen myös sinne. Sinun ei kannata käyttää komentoa carthage copy-frameworks
, koska testipaketit eivät tarvitse kehyksiä riisuttuna, eikä copy-frameworks
:n samanaikaisten instanssien suorittamista (kun rinnakkaiset rakennukset on kytketty päälle) tueta.
Kehysten päivittäminen
Jos olet muuttanut Cartfile-tiedostoasi tai haluat päivittää kunkin kehyksen uusimpiin versioihin (määrittelemiesi vaatimusten mukaisesti), suorita yksinkertaisesti komento carthage update
uudelleen.
Jos haluat päivittää vain yhden tai tietyt riippuvuudet, anna ne välilyönnillä erotettuna luettelona komennolle update
. esim.
carthage update Box
tai
carthage update Box Result
Experimental Resolver
Kehysten päivittämisen logiikka kirjoitettiin uudelleen nopeuden lisäämiseksi ja muistin käytön vähentämiseksi. Se on tällä hetkellä opt-in-ominaisuus. Sitä voi käyttää välittämällä --new-resolver
päivityskomentoon, esimerkiksi
carthage update --new-resolver Box
Jos sinulla on suorituskykyongelmia päivitysten aikana, kokeile uutta resolveria
Sisäkkäiset riippuvuudet
Jos kehyksellä, jonka haluat lisätä projektiin, on eksplisiittisesti lueteltuja riippuvuuksia karttatiedostossa (Cartfile), Carthage hakee ne automaattisesti puolestasi. Sinun on sitten itse raahattava ne projektiin Carthage/Build-kansiosta.
Jos projektissasi olevalla upotetulla kehyksellä on riippuvuuksia muihin kehyksiin, sinun on linkitettävä ne sovelluskohteeseen (vaikka sovelluskohteella ei olisi riippuvuutta kyseisiin kehyksiin eikä se koskaan käyttäisi niitä).
Alamoduulien käyttäminen riippuvuuksia varten
Oletusarvoisesti Carthage tarkistaa riippuvuuksien lähdetiedostot suoraan projektikansioosi, jolloin voit halutessasi sitouttaa tai sivuuttaa ne. Jos sen sijaan haluat, että riippuvuudet ovat saatavilla Git-alimoduuleina (ehkäpä siksi, että voit commitata ja työntää muutoksia niiden sisällä), voit suorittaa carthage update
tai carthage checkout
lipun --use-submodules
kanssa.
Tällä tavalla suoritettuna Carthage kirjoittaa arkistosi .gitmodules
– ja .git/config
-tiedostoihin ja päivittää alamoduulit automaattisesti, kun riippuvuuksien versiot muuttuvat.
Riippuvuuksien automaattinen uudelleenrakentaminen
Jos haluat työskennellä riippuvuuksiesi parissa kehitystyön aikana ja haluat, että ne rakennetaan automaattisesti uudelleen, kun rakennat emoprojektin, voit lisätä Run Script -rakentamisvaiheen, joka kutsuu Carthagea seuraavalla tavalla:
/usr/local/bin/carthage build --platform "$PLATFORM_NAME" --project-directory "$SRCROOT"
Huomaa, että sinun tulisi käyttää alamoduuleja, ennen kuin teet tämän, koska pelkkiä tarkistusohjelmistoja ei saisi muuttaa suoraan.
Rakennusten välimuistiin tallentaminen
Oletusarvoisesti Carthage rakentaa riippuvuuden uudelleen riippumatta siitä, onko se sama ratkaistu versio kuin aiemmin. --cache-builds
:n välittäminen saa Carthagen välttämään riippuvuuden uudelleenrakentamisen, jos se voi. Katso lisätietoja versiotiedostoista siitä, miten Carthage suorittaa tämän välimuistitiedoston.
Huomaa: Tällä hetkellä --cache-builds
on yhteensopimaton --use-submodules
:n kanssa. Molempien käyttäminen johtaa siihen, että työkopio ja alamoduuliriippuvuutesi sitoutuneet muutokset eivät rakennu oikein uudelleen. Katso lisätietoja kohdasta #1785.
Bash/Zsh/Fish completion
Carthage-komentojen ja -vaihtoehtojen automaattinen täydentäminen on mahdollista dokumentoidusti kohdassa Bash/Zsh/Fish Completion.
Carthagen tukeminen kehyksellesi
Carthage tukee virallisesti vain dynaamisia kehyksiä. Dynaamisia kehyksiä voi käyttää missä tahansa OS X:n versiossa, mutta vain iOS 8:ssa tai uudemmassa. Lisäksi versiosta 0.30.0 lähtien Carthage tukee staattisia kehyksiä.
Koska Carthagella ei ole keskitettyä pakettiluetteloa eikä projektin määrittelymuotoa, useimpien kehysten pitäisi rakentua automaattisesti.
Kaikkien kehysprojektien erityisvaatimukset on lueteltu alla.
Jaa Xcode-skeemasi
Carthage rakentaa vain Xcode-skeemoja, jotka jaetaan sinulta .xcodeproj
. Voit nähdä, rakentuvatko kaikki aiotut skeemasi onnistuneesti suorittamalla komennon carthage build --no-skip-current
ja tarkistamalla sitten Carthage/Build-kansion.
Jos tärkeää skeemaa ei rakenneta, kun suoritat tuon komennon, avaa Xcode ja varmista, että skeema on merkitty jaetuksi, jotta Carthage voi löytää sen.
Rakennusvirheiden ratkaiseminen
Jos kohtaat rakennusvirheitä kohdassa carthage build --no-skip-current
, kokeile suorittaa komento xcodebuild -scheme SCHEME -workspace WORKSPACE build
tai xcodebuild -scheme SCHEME -project PROJECT build
(todellisilla arvoilla) ja katso, tapahtuuko sama virhe siellä. Tämän pitäisi toivottavasti tuottaa tarpeeksi tietoa ongelman ratkaisemiseksi.
Jos sinulla on asennettuna useita versioita Applen kehittäjätyökaluista (esimerkiksi Xcode beta), käytä xcode-select
vaihtaaksesi, mitä versiota Carthage käyttää.
Jos et vieläkään pysty rakentamaan kehystäsi Carthagella, avaa ongelma, niin autamme mielellämme!
Tag stable releases
Carthage määrittää, mitkä versiot kehyksestäsi ovat saatavilla, etsimällä arkistossa julkaistut tagit ja yrittämällä tulkita jokaisen tagin nimen semanttiseksi versioksi. Esimerkiksi tagissa v1.2
semanttinen versio on 1.2.0.
Tagit, joissa ei ole versionumeroa tai joissa versionumeron perässä on mitä tahansa merkkejä (esim, 1.2-alpha-1
) eivät tällä hetkellä ole tuettuja, ja ne jätetään huomiotta.
Arkistoi valmiiksi rakennetut kehykset yhteen zip-tiedostoon
Carthage voi automaattisesti käyttää valmiiksi rakennettuja kehyksiä tyhjästä rakentamisen sijaan, jos ne on liitetty GitHub-julkaisuun projektin arkistossasi tai projektin määritystiedoston binääritiedoston kautta.
Voidaksesi tarjota valmiiksi rakennettuja kehyksiä tietylle tagille, kaikkien tuettujen alustojen binäärit on pakattava yhteen arkistoon, ja tämä arkisto on liitettävä kyseistä tagia vastaavaan julkaistuun julkaisuun. Liitetiedoston nimessä tulisi olla .framework
(esim. ReactiveCocoa.framework.zip
), jotta Karthagolle voidaan osoittaa, että se sisältää binääritiedostoja. Arkiston hakemistorakenne on vapaamuotoinen, mutta kehysten tulisi esiintyä arkistossa vain kerran, sillä ne kopioidaan Carthage/Build/<platform>
:iin nimensä perusteella (esim. ReactiveCocoa.framework
).
Voit suorittaa arkistointitoiminnon Carthagella itsellään käyttämällä:
-carthage build --no-skip-current-carthage archive YourFrameworkName
tai vaihtoehtoisesti
carthage build --archive
Luonnosjulkaisuja ei huomioida enää automaattisesti, vaikkakin ne vastaisivatkin haluamaasi tunnisteeseen.
Käytä travis-ci:tä tunnisteellisten valmiiksi rakennettujen kehysten lataamiseen
On mahdollista käyttää travis-ci:tä tunnisteellisten julkaisujen rakentamiseen ja lataamiseen.
-
Asenna travis CLI:llä
gem install travis
-
Asenna travis-ci arkistoosi (vaiheet 1 ja 2)
-
Luo
.travis.yml
-tiedosto arkistosi juureen tuon mallin perusteella. AsetaFRAMEWORK_NAME
oikeaan arvoon.Korvaa PROJECT_PLACEHOLDER ja SCHEME_PLACEHOLDER
Jos käytät projektin sijasta työtilaa, poista xcode_project-rivi ja poista kommentti xcode_workspace-riviltä.
Projektin pitäisi olla muotoa: MyProject.xcodeproj
Työtilan tulisi olla muodossa: MyWorkspace.xcworkspace
Voit vapaasti päivittää
xcode_sdk
-arvon toiseen SDK:hon, huomaa, että testaaminen iphoneos SDK:lla edellyttäisi koodin allekirjoitustunnuksen lataamistaLisätietoa saat osoitteesta travis docs for objective-c projects
language: objective-cosx_image: xcode7.3xcode_project: <PROJECT_PLACEHOLDER># xcode_workspace: <WORKSPACE_PLACEHOLDER>xcode_scheme: <SCHEME_PLACEHOLDER>xcode_sdk: iphonesimulator9.3env: global: - FRAMEWORK_NAME=<THIS_IS_A_PLACEHOLDER_REPLACE_ME>before_install: - brew update - brew outdated carthage || brew upgrade carthagebefore_script: # bootstrap the dependencies for the project # you can remove if you don't have dependencies - carthage bootstrapbefore_deploy: - carthage build --no-skip-current - carthage archive $FRAMEWORK_NAME
-
Ajoita
travis setup releases
, seuraa dokumentaatiota täältäTämä komento koodaa GitHub-tunnuksesi
.travis.yml
-tiedostoon, jotta travis voi ladata julkaisun GitHubiin.comKun kysytään ladattavaa tiedostoa, kirjoita$FRAMEWORK_NAME.framework.zip
-
Päivitä deploy-osio ajettavaksi tunnisteilla:
Kohdassa
.travis.yml
etsi:on: repo: repo/repo
Ja lisää
tags: true
jaskip_cleanup: true
:skip_cleanup: trueon: repo: repo/repo tags: true
Tämä antaa Travisin tietää luoda käyttöönoton, kun uusi tagi työnnetään, ja estää Travisia siivoamasta luotua zip-tiedostoa
Rakenna staattisia kehyksiä nopeuttaaksesi sovelluksen käynnistymisaikoja
Jos upotat sovellukseesi monia dynaamisia kehyksiä, sen käynnistymistä edeltävät käynnistymisaikataulut voivat olla melko hitaita. Carthage voi auttaa lieventämään tätä rakentamalla dynaamiset kehykset sen sijaan staattisina kehyksinä. Staattiset kehykset voidaan linkittää suoraan sovellukseesi tai sulauttaa yhteen suuremmaksi dynaamiseksi kehykseksi muutamalla yksinkertaisella työnkulun muutoksella, mikä voi johtaa dramaattisiin lyhennyksiin pääkäynnistystä edeltävissä ajoissa.
Carthage 0.30.0 tai uudempi
Versiosta 0.30.0 lähtien Carthage-projektissa on otettu käyttöön tuki staattisesti linkitetyille kehyksille, jotka on kirjoitettu Swiftillä tai Objective-C:llä ja joiden tuki otettiin käyttöön Xcoden 9.4:ssä. Huomaa kuitenkin, että siinä sanotaan nimenomaan frameworks, joten Darwin-paketit, joissa on .framework-pääte ja staattisesti linkitetyt objektiarkistot sisällä. Carthage ei tällä hetkellä tue staattisia kirjastoskeemoja, eikä niiden tuen käyttöönottoa ole suunnitteilla tulevaisuudessa.
Työnkulku eroaa tuskin:
- Sinun on edelleen rastitettava Carthage-yhteensopivan projektisi skeemat jaetuiksi kohdassa Tuote > Skeema >Hallitse skeemoja…, samoin kuin dynaamisten binääritiedostojen kohdalla
- Sinun on edelleen linkitettävä vasten staattinen .kehykset projektisi Build-vaiheissa aivan kuten dynaamisten binääritiedostojen kanssa
Mutta:
- Karthage-yhteensopivan projektisi Cocoa Framework-kohteen Build-asetukset, Linkitys-osiossa aseta Mach-O-tyypiksi Static Library
- Staattisesti linkitetyt kehyksesi rakennetaan ./Carthage/Build/$(PLATFORM_NAME)/Static
- Sinun ei pidä lisätä mitään staattisia kehyksiä tulo-/lähtötiedostoiksi carthage copy-frameworks Build Phase
Carthage 0.29.0 tai uudempi
Katso StaticFrameworks-dokumentista lisätietoja.
Huomaa, että tähän lähestymistapaan liittyy muutamia varoituksia:
- Swift static frameworks ei ole Applen virallisesti tukema
- Tämä on edistynyt työnkulku, jota ei ole sisäänrakennettu Carthageen, YMMV
Ilmoita yhteensopivuus
Haluatko mainostaa, että projektiasi voidaan käyttää Carthagen kanssa? Voit lisätä yhteensopivuusmerkinnän:
… omaan README
, yksinkertaisesti lisäämällä seuraavan Markdownin:
(https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
Tunnettuja ongelmia
DWARFs symbol problem
Esiasennettua kehystä ei voi debugata käyttämällä askelsuoritusta muulla koneella kuin sillä, jolla kehys on rakennettu. Yksinkertaisesti carthage bootstrap/build/update --no-use-binaries
pitäisi korjata tämä, mutta automatisoidumpaa kiertotapaa varten katso #924. Dupeeraa rdar://23551273, jos haluat Applen korjaavan tämän ongelman perimmäisen syyn.
CarthageKit
Suurin osa carthage
komentorivityökalun toiminnallisuudesta on itse asiassa koteloitu CarthageKit-nimiseen kehykseen.
Jos olet kiinnostunut käyttämään Carthagea osana jotain toista työkalua tai kenties laajentamaan Carthagen toiminnallisuutta, vilkaise CarthageKitin lähdekoodia nähdäksesi, sopiiko API tarpeisiisi.
Carthagen ja CocoaPodsin erot
CocoaPods on Cocoa-ohjelmiston pitkäaikainen riippuvuuksienhallintaohjelma. Miksi Carthage sitten luotiin?
Yksi, CocoaPods (oletusarvoisesti) luo ja päivittää automaattisesti Xcode-työtilan sovelluksellesi ja kaikille riippuvuuksille. Carthage rakentaa kehysbinäärit käyttäen xcodebuild
, mutta jättää vastuun niiden integroimisesta käyttäjälle. CocoaPodsin lähestymistapa on helpompi käyttää, kun taas Carthagen lähestymistapa on joustava ja huomaamaton.
CocoaPodsin tavoite mainitaan sen README-tiedotteessa seuraavasti:
… parantaa kolmansien osapuolten avoimen lähdekoodin kirjastojen löydettävyyttä ja sitoutumista niihin luomalla keskitetympi ekosysteemi.
Carthage on sitä vastoin luotu hajautetuksi riippuvuuksienhallinnaksi. Hankkeista ei ole keskitettyä luetteloa, mikä vähentää ylläpitotyötä ja estää keskitetyn vikapisteen syntymisen. Projektien löytäminen on kuitenkin vaikeampaa – käyttäjien on turvauduttava GitHubin Trending-sivuihin tai vastaaviin.
CocoaPods-projekteilla on myös oltava niin sanottu podspec-tiedosto, joka sisältää metatietoja projektista ja määrittelee, miten se tulisi rakentaa. Carthage käyttää xcodebuild
riippuvuuksien rakentamiseen sen sijaan, että se integroisi ne yhteen työtilaan, sillä ei ole samanlaista määrittelytiedostoa, mutta riippuvuuksillesi on sisällytettävä oma Xcode-projektinsa, jossa kuvataan, miten niiden tuotteet rakennetaan.
Loppujen lopuksi loimme Carthagen, koska halusimme yksinkertaisimman mahdollisen työkalun – riippuvuuksienhallintaohjelman, joka saa työnsä tehtyä ilman, että se ottaa vastuuta Xcodesta ja ilman, että se aiheuttaa ylimääräistä työtä kehysten tekijöille. CocoaPods tarjoaa monia hämmästyttäviä ominaisuuksia, joita Carthagella ei koskaan tule olemaan, ylimääräisen monimutkaisuuden kustannuksella.
Lisenssi
Carthage on julkaistu MIT-lisenssillä.
Headerin taustakuva on julkaistu CC BY-NC-SA 2.0 -lisenssillä. Alkuperäinen kuva: Richard Mortel.