Carthage / Carthage

author
16 minutes, 3 seconds Read

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
    • 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
  • 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

  1. Hanki Carthage ajamalla brew install carthage tai valitse jokin muu asennustapa

  2. Luo Cartfile samaan hakemistoon, jossa .xcodeproj tai .xcworkspace on

  3. Luetteloi haluamasi riippuvaisuudet Cartfileen, esim:

    github "Alamofire/Alamofire" ~> 4.7.2
  4. Käynnistä carthage update --use-xcframeworks

  5. Tiedosto Cartfile.resolved ja hakemisto Carthage ilmestyvät samaan hakemistoon, jossa .xcodeproj tai .xcworkspace on

  6. Vetäkää rakennetut .xcframework niput Carthage/Build:stä sovelluksen Xcode-projektin ”Kehykset ja kirjastot”-osioon.

  7. 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 ensin sudo chown -R $(whoami) /usr/local.

  • Homebrew: Voit käyttää Homebrewia ja asentaa carthage-työkalun järjestelmääsi yksinkertaisesti suorittamalla brew update ja brew 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 suorittamalla sudo port selfupdate ja sudo 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 suorita make 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)

  1. Luo Cartfile-tiedosto, joka luettelee ne kehykset, joita haluat käyttää projektissasi.
  2. Aja carthage update --use-xcframeworks. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa jokaisen tai lataa valmiiksi käännetty XCFramework.
  3. 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

  1. Poista Carthage/Build-kansiosi poistaaksesi kaikki olemassa olevat kehysniput.
  2. Rakenna uusi XCFrameworks ajamalla carthage build --use-xcframeworks. Kaikki muut argumentit, joilla rakennat, voit antaa normaalisti.
  3. 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.
  4. 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

  1. Luo Cartfile-tiedosto, jossa luetellaan kehykset, joita haluat käyttää projektissasi.
  2. Ajoita carthage update --platform macOS. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa jokaisen tai lataa valmiiksi käännetty kehys.
  3. 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ä.

  1. Napsauta sovelluskohteesi Rakennusvaiheet-asetukset-välilehdellä +-kuvaketta ja valitse Uusi kopiointivaihe.
  2. Napsauta pudotusvalikosta Kohde ja valitse Tuotteiden hakemisto.
  3. Vedä ja pudota kunkin käyttämäsi kehyksen vastaava dSYM-tiedosto.
Jos rakennat iOS:lle, tvOS:lle tai watchOS:lle

Alustakohtaiset ohjeet

  1. Luo Cartfile-tiedosto, jossa luetellaan ne kehykset, joita haluat käyttää projektissasi.

  2. Aja carthage update. Tämä hakee riippuvuudet Carthage/Checkouts-kansioon ja rakentaa sitten jokaisen tai lataa valmiiksi käännetty kehys.

  3. 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.

  4. 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
  5. Luo tiedosto nimeltä input.xcfilelist ja tiedosto nimeltä output.xcfilelist

  6. 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
  7. 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.

  8. Lisää input.xcfilelist Carthagen suoritusskriptivaiheen ”Input File Lists” -osioon

  9. 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.

  1. Sovelluskohteidesi Build Phases-asetukset-välilehdellä napsauta +-kuvaketta ja valitse New 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.

  1. Asenna travis CLI:llä gem install travis

  2. Asenna travis-ci arkistoosi (vaiheet 1 ja 2)

  3. Luo .travis.yml-tiedosto arkistosi juureen tuon mallin perusteella. Aseta FRAMEWORK_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 lataamista

    Lisä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
  4. 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

  5. Päivitä deploy-osio ajettavaksi tunnisteilla:

    Kohdassa .travis.yml etsi:

    on: repo: repo/repo

    Ja lisää tags: true ja skip_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.

Similar Posts

Vastaa

Sähköpostiosoitettasi ei julkaista.