Carthage se dorește a fi cel mai simplu mod de a adăuga cadre de lucru la aplicația Cocoa.
Carthage vă construiește dependențele și vă oferă cadre de lucru binare, dar dumneavoastră păstrați controlul total asupra structurii și configurației proiectului dumneavoastră. Carthage nu vă modifică automat fișierele de proiect sau setările de construire.
- Început rapid
- Instalarea Carthage
- Adăugarea de framework-uri la o aplicație
- Noțiuni introductive
- Construirea platformei-XCFrameworks independente de platformă
- Migrarea unui proiect de la pachete de cadre la XCFrameworks
- Construirea pachetelor de cadre specifice platformei
- Dacă construiți pentru macOS
- Dacă construiți pentru iOS, tvOS, sau watchOS
- Pentru toate platformele
- (Opțional) Adăugați faza de compilare pentru a avertiza cu privire la dependențele învechite
- Compatibilitatea descărcării cadrului binar Swift
.
- Construirea platformei-XCFrameworks independente de platformă
- Executarea unui proiect care utilizează Carthage
- Adaugarea de cadre de lucru la testele unitare sau la un cadru de lucru
- Actualizarea cadrelor de lucru
- Experimental Resolver
- Nested dependențe
- Utilizarea submodulelor pentru dependențe
- Reconstruirea automată a dependențelor
- Caching builds
- Completarea Bash/Zsh/Fish
- Noțiuni introductive
- Sprijin pentru Carthage pentru cadrul dvs. de lucru
- Părtășiți schemele Xcode
- Rezolvați eșecurile de compilare
- Etichetați versiunile stabile
- Arhivați cadrele de lucru precompuse într-un singur fișier zip
- Utilizați travis-ci pentru a încărca cadrele pre-construite etichetate
- Constituiți cadrele statice pentru a accelera timpii de lansare a aplicației dvs. CocoaPods
- Licența
- Quick Start
- Instalarea Carthage
- Adaugarea de cadre de lucru la o aplicație
- Noțiuni introductive
- Construirea de cadre XCFrameworks independente de platformă (Xcode 12 și mai sus)
- Migrarea unui proiect de la pachete de cadre la XCFrameworks
- Construirea pachetelor cadru specifice platformei (implicit pentru Xcode 11 și următoarele)
- Dacă construiți pentru macOS
- Dacă construiți pentru iOS, tvOS sau watchOS
- (Opțional) Adăugați o fază de construire pentru a vă avertiza cu privire la dependențele neactualizate
- Compatibilitatea descărcării cadrului binar Swift
- Rularea unui proiect care utilizează Carthage
- Adăugarea cadrelor la testele unitare sau la un cadru
- Actualizarea cadrelor
- Experimental Resolver
- Dependențe imbricate
- Utilizarea submodulelor pentru dependențe
- Reconstituirea automată a dependențelor
- Construirea în cache
- Completarea Bash/Zsh/Fish
- Sprijinirea Carthage pentru cadrul dvs. de lucru
- Împărtășiți schemele Xcode
- Rezolvați eșecurile de construcție
- Versiuni stabile de etichete
- Arhivați cadrele preinstalate într-un singur fișier zip
- Utilizați travis-ci pentru a vă încărca cadrele precompilate etichetate
- Construiți cadre statice pentru a accelera timpii de lansare a aplicației dumneavoastră
- Carthage 0.30.0 sau o versiune mai recentă
- Carthage 0.29.0 sau inferior
- Declarați-vă compatibilitatea
- Probleme cunoscute
- Problema simbolului DWARFs
- CarthageKit
- Diferențe între Carthage și CocoaPods
- Licență
Quick Start
-
Obțineți Carthage rulând
brew install carthage
sau alegeți o altă metodă de instalare -
Crearea unui fișier Cartfile în același director în care se află
.xcodeproj
sau.xcworkspace
-
Enumerați dependențele dorite în fișierul Cartfile, de exemplu:
github "Alamofire/Alamofire" ~> 4.7.2
-
Executați
carthage update --use-xcframeworks
-
Un fișier
Cartfile.resolved
și un directorCarthage
vor apărea în același director în care se află.xcodeproj
sau.xcworkspace
-
Trageți pachetele
.xcframework
construite dinCarthage/Build
în secțiunea „Frameworks and Libraries” a proiectului Xcode al aplicației dumneavoastră. -
Dacă utilizați Carthage pentru o aplicație, selectați „Embed & Sign”, altfel „Do Not Embed”.
Pentru un ghid aprofundat, citiți mai departe din Adăugarea cadrelor de lucru la o aplicație
Instalarea Carthage
Există mai multe opțiuni pentru instalarea Carthage:
-
Installer: Descărcați și rulați fișierul
Carthage.pkg
pentru cea mai recentă versiune, apoi urmați instrucțiunile de pe ecran. Dacă instalați pkg-ul prin CLI, este posibil să fie nevoie să rulați mai întâisudo chown -R $(whoami) /usr/local
. -
Homebrew: Puteți utiliza Homebrew și instala instrumentul
carthage
pe sistemul dumneavoastră pur și simplu rulândbrew update
șibrew install carthage
. (notă: dacă ați instalat anterior versiunea binară a Carthage, trebuie să ștergeți/Library/Frameworks/CarthageKit.framework
). -
MacPorts: Puteți utiliza MacPorts și instala instrumentul
carthage
pe sistemul dvs. pur și simplu executândsudo port selfupdate
șisudo port install carthage
. (notă: dacă ați instalat anterior versiunea binară a Carthage, trebuie să ștergeți/Library/Frameworks/CarthageKit.framework
). -
De la sursă: Dacă doriți să rulați cea mai recentă versiune de dezvoltare (care poate fi foarte instabilă sau incompatibilă), clonați pur și simplu ramura
master
a depozitului, apoi rulațimake install
. Necesită Xcode 10.0 (Swift 4.2).
Adaugarea de cadre de lucru la o aplicație
După ce ați instalat Carthage, puteți începe să adăugați cadre de lucru la proiectul dumneavoastră. Rețineți că Carthage acceptă numai cadre dinamice, care sunt disponibile numai pe iOS 8 sau mai târziu (sau pe orice versiune de OS X).
Noțiuni introductive
Construirea de cadre XCFrameworks independente de platformă (Xcode 12 și mai sus)
- Creează un fișier Cartfile care listează cadrele pe care doriți să le utilizați în proiectul dumneavoastră.
- Executați
carthage update --use-xcframeworks
. Aceasta va prelua dependențele într-un dosar Carthage/Checkouts și le va construi pe fiecare dintre ele sau va descărca un XCFramework precompilat. - În fila General settings (Setări generale) a obiectivelor aplicației dumneavoastră, în secțiunea Frameworks, Libraries, and Embedded Content (Cadre, biblioteci și conținut încorporat), trageți și fixați fiecare XCFramework pe care doriți să îl utilizați din dosarul Carthage/Build de pe disc.
Migrarea unui proiect de la pachete de cadre la XCFrameworks
Încurajăm utilizarea XCFrameworks începând cu versiunea 0.37.0 (ianuarie 2021) și solicităm XCFrameworks atunci când construiți pe un Mac Apple Silicon. Trecerea de la pachete de cadre discrete la XCFrameworks necesită câteva modificări ale proiectului dvs.:
Pași de migrare
- Ștergeți dosarul
Carthage/Build
pentru a elimina orice pachete de cadre existente. - Constituiți un nou XCFrameworks prin rularea
carthage build --use-xcframeworks
. Orice alte argumente cu care construiți pot fi furnizate în mod normal. - Îndepărtați referințele la vechile cadre în fiecare dintre țintele dvs.:
- Eliminați referințele la cadrele Carthage din secțiunea Cadre, biblioteci și conținut încorporat a țintei și/sau din faza de construcție Link Binary with Libraries a acesteia.
- Eliminați referințele la cadrele Carthage din orice fază de construcție Copy Files.
- Eliminați faza de construcție
carthage copy-frameworks
a țintei, dacă este prezentă.
- Adaugați referințe la XCFrameworks în fiecare dintre țintele dumneavoastră:
- Pentru o țintă de aplicație: În fila General settings, în secțiunea Frameworks, Libraries, and Embedded Content, trageți și fixați fiecare XCFramework pe care îl utilizați din folderul Carthage/Build de pe disc.
- Pentru o țintă cadru: În fila Build Phases, într-o fază Link Binary with Libraries, trageți și fixați fiecare XCFramework pe care îl utilizați din folderul Carthage/Build de pe disc.
Construirea pachetelor cadru specifice platformei (implicit pentru Xcode 11 și următoarele)
Incompatibilitate Xcode 12+: Platformele cu mai multe arhitecturi nu sunt acceptate atunci când se construiesc pachete de cadre în Xcode 12 și mai sus. Preferați construirea cu XCFrameworks. Dacă aveți nevoie să construiți pachete de cadre discrete, utilizați un fișier xcconfig de rezolvare.
Dacă construiți pentru macOS
instrucțiuni specifice macOS
- Creați un fișier Cartfile care listează cadrele pe care doriți să le utilizați în proiectul dumneavoastră.
- Executați
carthage update --platform macOS
. Acest lucru va prelua dependențele într-un dosar Carthage/Checkouts și le va construi pe fiecare dintre ele sau va descărca un framework precompilat. - În fila General settings a aplicației dvs. țintă, în secțiunea Embedded Binaries, trageți și fixați fiecare framework pe care doriți să îl utilizați din dosarul Carthage/Build de pe disc.
În plus, va trebui să copiați simbolurile de depanare pentru depanare și raportarea accidentelor pe OS X.
- În fila Build Phases settings a aplicației țintă, faceți clic pe pictograma + și alegeți New Copy Files Phase.
- Faceți clic pe meniul derulant Destination și selectați Products Directory.
- Pentru fiecare framework pe care îl utilizați, trageți și fixați fișierul dSYM corespunzător.
Dacă construiți pentru iOS, tvOS sau watchOS
Instrucțiuni specifice platformei
-
Creați un fișier Cartfile care listează cadrele pe care doriți să le folosiți în proiect.
-
Executați
carthage update
. Aceasta va prelua dependențele într-un dosar Carthage/Checkouts, apoi va construi fiecare dintre ele sau va descărca un framework precompilat. -
Deschideți fila Setări generale a obiectivelor aplicației dvs. Pentru Xcode 11.0 și versiunile ulterioare, în secțiunea „Frameworks, Libraries, and Embedded Content” (Cadre, biblioteci și conținut încorporat), trageți și fixați fiecare cadru pe care doriți să îl utilizați din folderul Carthage/Build de pe disc. Apoi, în secțiunea „Embed”, selectați „Do Not Embed” din meniul derulant pentru fiecare element adăugat. Pentru Xcode 10.x și versiunile inferioare, în secțiunea „Linked Frameworks and Libraries” (Cadre și biblioteci legate), trageți și fixați fiecare cadru pe care doriți să îl utilizați din folderul Carthage/Build de pe disc.
-
În fila Build Phases settings (Setări faze de construcție) a obiectivelor aplicației dumneavoastră, faceți clic pe pictograma + și alegeți New Run Script Phase (Fază nouă de execuție a scriptului). Creați un Run Script în care specificați shell-ul dvs. (ex:
/bin/sh
), adăugați următorul conținut în zona de script de sub shell:/usr/local/bin/carthage copy-frameworks
-
Creați un fișier numit
input.xcfilelist
și un fișier numitoutput.xcfilelist
-
Adaugați în
input.xcfilelist
căile de acces la cadrele pe care doriți să le utilizați. De exemplu:$(SRCROOT)/Carthage/Build/iOS/Result.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
-
Adaugați căile de acces la cadrele copiate la
output.xcfilelist
. De exemplu:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework
Cu fișierele de ieșire specificate alături de fișierele de intrare, Xcode trebuie să ruleze scriptul doar atunci când fișierele de intrare au fost modificate sau când fișierele de ieșire lipsesc. Acest lucru înseamnă că compilările murdare vor fi mai rapide atunci când nu ați reconstruit cadrele cu Carthage.
-
Adaugați
input.xcfilelist
la secțiunea „Input File Lists” (Liste de fișiere de intrare) din faza de execuție a scriptului Carthage -
Adaugați
output.xcfilelist
la secțiunea „Output File Lists” (Liste de fișiere de ieșire) din faza de execuție a scriptului Carthage
Acest script rezolvă o eroare de trimitere în App Store declanșată de binari universali și se asigură că fișierele necesare legate de bitcode și dSYM-urile sunt copiate la arhivare.
Cu informațiile de depanare copiate în directorul de produse construite, Xcode va putea simboliza urma de stivă ori de câte ori vă opriți la un punct de întrerupere. Acest lucru vă va permite, de asemenea, să parcurgeți codul terților în depanator.
Când vă arhivați aplicația pentru a fi trimisă în App Store sau TestFlight, Xcode va copia, de asemenea, aceste fișiere în subdirectorul dSYMs al pachetului
.xcarchive
al aplicației dvs. Cel mai important dintre acestea este fișierul Cartfile.resolved, care enumeră versiunile care au fost efectiv construite pentru fiecare framework. Asigurați-vă că ați confirmat fișierul Cartfile.resolved, deoarece oricine altcineva care utilizează proiectul va avea nevoie de acest fișier pentru a construi aceleași versiuni de framework.(Opțional) Adăugați o fază de construire pentru a vă avertiza cu privire la dependențele neactualizate
Puteți adăuga o fază Run Script pentru a vă avertiza automat atunci când una dintre dependențele dvs. este neactualizată.
- În fila de setări
Build Phases
a obiectivelor aplicației dvs. Creați un script de execuție în care specificați shell-ul dvs. (ex:/bin/sh
), adăugați următorul conținut în zona de script de sub shell:
/usr/local/bin/carthage outdated --xcode-warnings 2>/dev/null
Compatibilitatea descărcării cadrului binar Swift
Carthage va verifica pentru a se asigura că cadrele Swift (și cadrele mixte Objective-C/Swift) descărcate au fost construite cu aceeași versiune de Swift care este utilizată la nivel local. Dacă există o neconcordanță de versiune, Carthage va continua să construiască cadrul din sursă. Dacă cadrul nu poate fi construit de la sursă, Carthage va eșua.
Pentru că Carthage utilizează ieșirea din
xcrun swift --version
pentru a determina versiunea locală Swift, asigurați-vă că rulați comenzile Carthage cu lanțul de instrumente Swift pe care intenționați să îl utilizați. Pentru multe cazuri de utilizare, nu este nevoie de nimic suplimentar. Cu toate acestea, de exemplu, dacă construiți un proiect Swift 2.3 utilizând Xcode 8.x, o abordare pentru a specificaswift
implicit pentrucarthage bootstrap
este de a utiliza următoarea comandă:TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap
Rularea unui proiect care utilizează Carthage
După ce ați finalizat pașii de mai sus și v-ați împins modificările, ceilalți utilizatori ai proiectului trebuie doar să recupereze depozitul și să ruleze
carthage bootstrap
pentru a începe să utilizeze cadrele pe care le-ați adăugat.Adăugarea cadrelor la testele unitare sau la un cadru
Utilizarea Carthage pentru dependențele oricărei ținte arbitrare este destul de asemănătoare cu utilizarea Carthage pentru o aplicație. Principala diferență constă în modul în care cadrele sunt de fapt configurate și legate în Xcode.
Pentru că țintelor de teste unitare le lipsește secțiunea Linked Frameworks and Libraries (Cadre și biblioteci legate) din fila General settings (Setări generale), trebuie în schimb să trageți cadrele construite în faza de construire Link Binaries With Libraries (Legătură de binare cu biblioteci).
În ținta Test din fila Build Settings, adăugați
@loader_path/Frameworks
la Runpath Search Paths dacă nu este deja prezentă.În cazuri rare, este posibil să doriți să copiați, de asemenea, fiecare dependență în produsul de construcție (de ex, pentru a încorpora dependențele în cadrul exterior, sau pentru a vă asigura că dependențele sunt prezente într-un pachet de testare). Pentru a face acest lucru, creați o nouă fază de construire Copy Files (Copiere fișiere) cu destinația Frameworks (Cadre), apoi adăugați acolo și referința cadrului. Nu ar trebui să folosiți comanda
carthage copy-frameworks
deoarece pachetele de testare nu au nevoie de cadre dezbrăcate, iar rularea unor instanțe simultane decopy-frameworks
(cu compilările paralele activate) nu este suportată.Actualizarea cadrelor
Dacă ați modificat fișierul Cartfile sau doriți să actualizați la cele mai noi versiuni ale fiecărui cadru (sub rezerva cerințelor pe care le-ați specificat), pur și simplu rulați din nou comanda
carthage update
.Dacă doriți să actualizați doar una, sau anumite dependențe, treceți-le ca o listă separată prin spațiu la comanda
update
. de exemplu:carthage update Box
sau
carthage update Box Result
Experimental Resolver
O rescriere a logicii de actualizare a cadrelor a fost făcută cu scopul de a crește viteza și de a reduce utilizarea memoriei. În prezent, este o caracteristică opt-in. Poate fi utilizată trecând la comanda de actualizare, de exemplu,
carthage update --new-resolver Box
Dacă întâmpinați probleme de performanță în timpul actualizărilor, vă rugăm să încercați noul rezolvator
Dependențe imbricate
Dacă cadrul pe care doriți să îl adăugați la proiectul dvs. are dependențe listate în mod explicit într-un Cartfile, Carthage le va prelua automat pentru dvs. Va trebui apoi să le trageți dvs. însuși în proiectul dvs. din folderul Carthage/Build.
Dacă framework-ul încorporat în proiectul dvs. are dependențe de alte framework-uri, trebuie să le legați la ținta aplicației (chiar dacă ținta aplicației nu are dependențe de framework-urile respective și nu le folosește niciodată).
Utilizarea submodulelor pentru dependențe
În mod implicit, Carthage va verifica direct fișierele sursă ale dependențelor în dosarul proiectului dumneavoastră, lăsându-vă să le confirmați sau să le ignorați după cum doriți. Dacă doriți ca dependențele să fie disponibile ca submodule Git în schimb (poate pentru a putea confirma și împinge modificări în cadrul acestora), puteți rula
carthage update
saucarthage checkout
cu stegulețul--use-submodules
.Când este rulat în acest mod, Carthage va scrie în fișierele
.gitmodules
și.git/config
ale depozitului dvs. și va actualiza automat submodulele atunci când versiunile dependențelor se schimbă.Reconstituirea automată a dependențelor
Dacă doriți să lucrați la dependențele dvs. în timpul dezvoltării și doriți ca acestea să fie reconstruite automat atunci când construiți proiectul părinte, puteți adăuga o fază de construire Run Script care invocă Carthage astfel:
/usr/local/bin/carthage build --platform "$PLATFORM_NAME" --project-directory "$SRCROOT"
Rețineți că ar trebui să folosiți submodule înainte de a face acest lucru, deoarece verificările simple nu trebuie modificate direct.
Construirea în cache
În mod implicit, Carthage va reconstrui o dependență indiferent dacă este aceeași versiune rezolvată ca înainte. Trecerea
--cache-builds
va face ca carthage să evite reconstruirea unei dependențe dacă poate. Consultați informațiile despre fișierele de versiune pentru detalii despre modul în care Carthage realizează această memorare.Nota: În acest moment
--cache-builds
este incompatibil cu--use-submodules
. Utilizarea ambelor va avea ca rezultat faptul că copia de lucru și modificările angajate în dependența submodulelor dvs. nu vor fi reconstruite corect. Consultați #1785 pentru detalii.Completarea Bash/Zsh/Fish
Completarea automată a comenzilor și opțiunilor Carthage este disponibilă așa cum este documentat în Completarea Bash/Zsh/Fish.
Sprijinirea Carthage pentru cadrul dvs. de lucru
Carthage sprijină doar oficial cadrele de lucru dinamice. Cadrele dinamice pot fi utilizate pe orice versiune de OS X, dar numai pe iOS 8 sau mai târziu. În plus, începând cu versiunea 0.30.0, Carthage suportă cadrele statice.
Pentru că Carthage nu are o listă de pachete centralizată și nici un format de specificații de proiect, majoritatea cadrelor ar trebui să se construiască automat.
Cerințele specifice ale oricărui proiect de cadru sunt enumerate mai jos.
Împărtășiți schemele Xcode
Carthage va construi numai schemele Xcode care sunt partajate din
.xcodeproj
. Puteți vedea dacă toate schemele pe care le intenționați să le construiți cu succes executândcarthage build --no-skip-current
, apoi verificând dosarul Carthage/Build.Dacă o schemă importantă nu este construită atunci când executați această comandă, deschideți Xcode și asigurați-vă că schema este marcată ca Shared, astfel încât Carthage să o poată descoperi.
Rezolvați eșecurile de construcție
Dacă întâmpinați eșecuri de construcție în
carthage build --no-skip-current
, încercați să rulațixcodebuild -scheme SCHEME -workspace WORKSPACE build
sauxcodebuild -scheme SCHEME -project PROJECT build
(cu valorile reale) și vedeți dacă apare același eșec acolo. Acest lucru ar trebui să dea, sperăm, suficiente informații pentru a rezolva problema.Dacă aveți instalate mai multe versiuni ale instrumentelor de dezvoltare Apple (o versiune beta Xcode, de exemplu), utilizați
xcode-select
pentru a schimba ce versiune folosește Carthage.Dacă tot nu reușiți să vă construiți framework-ul cu Carthage, vă rugăm să deschideți o problemă și vom fi bucuroși să vă ajutăm!
Versiuni stabile de etichete
Carthage determină ce versiuni ale framework-ului dvs. sunt disponibile căutând printre etichetele publicate pe depozit și încercând să interpreteze fiecare nume de etichetă ca o versiune semantică. De exemplu, în tag-ul
v1.2
, versiunea semantică este 1.2.0.Tag-urile fără niciun număr de versiune sau cu orice caractere după numărul de versiune (de ex, ) nu sunt acceptate în prezent și vor fi ignorate.
Arhivați cadrele preinstalate într-un singur fișier zip
Carthage poate utiliza automat cadrele preinstalate, în loc să le construiască de la zero, dacă acestea sunt atașate la o versiune GitHub Release pe depozitul proiectului dumneavoastră sau prin intermediul unui fișier binar de definire a proiectului.
Pentru a oferi cadre pre-construite pentru o anumită etichetă, fișierele binare pentru toate platformele acceptate ar trebui să fie comprimate împreună într-o singură arhivă, iar arhiva respectivă ar trebui să fie atașată la un Release publicat corespunzător etichetei respective. Atașamentul ar trebui să includă
.framework
în numele său (de exemplu,ReactiveCocoa.framework.zip
), pentru a indica lui Carthage că acesta conține binare. Structura de directoare a arhivei este liberă, dar, cadrele ar trebui să apară o singură dată în arhivă, deoarece vor fi copiate înCarthage/Build/<platform>
pe baza numelui lor (de exempluReactiveCocoa.framework
).Puteți efectua operațiunea de arhivare cu carthage însuși folosind:
-carthage build --no-skip-current-carthage archive YourFrameworkName
sau alternativ
carthage build --archive
Lansările provizorii vor fi ignorate automat, chiar dacă corespund etichetei dorite.
Utilizați travis-ci pentru a vă încărca cadrele precompilate etichetate
Este posibil să utilizați travis-ci pentru a construi și încărca versiunile etichetate.
-
Instalați travis CLI cu
gem install travis
-
Configurați travis-ci pentru depozitul dvs. (Pașii 1 și 2)
-
Creați fișierul
.travis.yml
la rădăcina depozitului dvs. pe baza acestui șablon. SetațiFRAMEWORK_NAME
la valoarea corectă.Înlocuiți PROJECT_PLACEHOLDER și SCHEME_PLACEHOLDER
Dacă folosiți un spațiu de lucru în loc de un proiect, eliminați linia xcode_project și decomentați linia xcode_workspace.
Proiectul ar trebui să fie în formatul: MyProject.xcodeproj
Spațiul de lucru trebuie să fie în formatul: MyWorkspace.xcworkspace
Simțiți-vă liber să actualizați valoarea
xcode_sdk
la un alt SDK, rețineți că testarea pe iphoneos SDK ar necesita încărcarea unei identități de semnare a coduluiPentru mai multe informații puteți vizita 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
-
Executați
travis setup releases
, urmați documentația aiciAcestă comandă va codifica acreditările GitHub în fișierul
.travis.yml
pentru a permite lui travis să încarce versiunea pe GitHub.comCând vi se cere fișierul de încărcat, introduceți$FRAMEWORK_NAME.framework.zip
-
Actualizați secțiunea deploy pentru a rula pe etichete:
În
.travis.yml
localizați:on: repo: repo/repo
Și adăugați
tags: true
șiskip_cleanup: true
:skip_cleanup: trueon: repo: repo/repo tags: true
Aceasta îi va permite lui travis să știe că trebuie să creeze o implementare atunci când o nouă etichetă este împinsă și îl va împiedica pe travis să curețe fișierul zip generat
Construiți cadre statice pentru a accelera timpii de lansare a aplicației dumneavoastră
Dacă încorporați multe cadre dinamice în aplicația dumneavoastră, timpii de lansare înainte de lansare principală pot fi destul de lenți. Carthage vă poate ajuta să atenuați acest lucru prin construirea cadrelor dvs. dinamice ca cadre statice în schimb. Cadrele statice pot fi legate direct în aplicația dvs. sau pot fi îmbinate într-un cadru dinamic mai mare cu câteva modificări simple ale fluxului dvs. de lucru, ceea ce poate duce la reduceri dramatice ale timpilor de lansare pre-main.
Carthage 0.30.0 sau o versiune mai recentă
De la versiunea 0.30.0, proiectul Carthage lansează suportul pentru cadrele legate static scrise în Swift sau Objective-C, suport pentru care a fost introdus în Xcode 9.4. Vă rugăm să rețineți totuși că se vorbește în mod specific de framework-uri, de unde și pachetele Darwin cu extensia .framework și arhivele de obiecte legate static din interior. Carthage nu suportă în prezent schemele de bibliotecă statică și nici nu există planuri de a introduce suportul acestora în viitor.
Fluxul de lucru diferă abia:
- Încă trebuie să bifați schemele proiectului dvs. compatibil Carthage ca fiind partajate în Product > Scheme > Manage Schemes…, la fel ca în cazul binarelor dinamice
- Încă trebuie să faceți legătura cu schemele statice .frameworks în fazele de construire ale proiectului dumneavoastră, la fel ca și în cazul binarelor dinamice
- În secțiunea Build Settings, Linking (Setări de construire, Legătură) din targetul Cocoa Framework al proiectului dumneavoastră compatibil cu Carthage, setați Mach-O Type (Tip Mach-O) la Static Library (Bibliotecă statică)
- Structurile dumneavoastră legate static vor fi construite la ./Carthage/Build/$(PLATFORM_NAME)/Static
- Nu ar trebui să adăugați niciunul dintre cadrele statice ca fișiere de intrare/ieșire în faza de construire carthage copy-frameworks
- Cadrele statice Swift nu sunt suportate oficial de Apple
- Acesta este un flux de lucru avansat care nu este încorporat în Carthage, YMMV
Cu toate acestea:
Carthage 0.29.0 sau inferior
Vezi documentul StaticFrameworks pentru detalii.
Rețineți că se aplică câteva avertismente la această abordare:
Declarați-vă compatibilitatea
Vreți să anunțați că proiectul dvs. poate fi utilizat cu Carthage? Puteți adăuga o insignă de compatibilitate:
… la
README
dumneavoastră, prin simpla inserare a următorului Markdown:(https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
Probleme cunoscute
Problema simbolului DWARFs
Cadrul pre-construit nu poate fi depanat folosind execuția pas cu pas pe altă mașină decât cea pe care a fost construit cadrul. Pur și simplu
carthage bootstrap/build/update --no-use-binaries
ar trebui să rezolve această problemă, dar pentru o soluție mai automatizată, a se vedea #924. Dublați rdar://23551273 dacă doriți ca Apple să rezolve cauza principală a acestei probleme.CarthageKit
Majoritatea funcționalității instrumentului de linie de comandă
carthage
este de fapt încapsulată într-un cadru numit CarthageKit.Dacă sunteți interesat să folosiți Carthage ca parte a unui alt instrument, sau poate să extindeți funcționalitatea lui Carthage, aruncați o privire la codul sursă CarthageKit pentru a vedea dacă API-ul se potrivește nevoilor dumneavoastră.
Diferențe între Carthage și CocoaPods
CocoaPods este un manager de dependențe de lungă durată pentru Cocoa. Deci, de ce a fost creat Carthage?
În primul rând, CocoaPods (în mod implicit) creează și actualizează automat un spațiu de lucru Xcode pentru aplicația dumneavoastră și toate dependențele. Carthage construiește binarele cadrului folosind
xcodebuild
, dar lasă responsabilitatea integrării acestora în sarcina utilizatorului. Abordarea CocoaPods este mai ușor de utilizat, în timp ce cea a lui Carthage este flexibilă și neintruzivă.Obiectivul lui CocoaPods este enumerat în README-ul său după cum urmează:
… pentru a îmbunătăți capacitatea de descoperire și implicarea în bibliotecile open-source ale terților, prin crearea unui ecosistem mai centralizat.
În schimb, Carthage a fost creat ca un manager de dependențe descentralizat. Nu există o listă centrală de proiecte, ceea ce reduce munca de întreținere și evită orice punct central de eșec. Cu toate acestea, descoperirea proiectelor este mai dificilă – utilizatorii trebuie să recurgă la paginile Trending de pe GitHub sau altele similare.
Proiectele CocoaPods trebuie să aibă, de asemenea, ceea ce se numește un fișier podspec, care include metadate despre proiect și specifică modul în care acesta trebuie construit. Carthage folosește
xcodebuild
pentru a construi dependențele, în loc să le integreze într-un singur spațiu de lucru, nu are un fișier de specificații similar, dar dependențele dvs. trebuie să includă propriul lor proiect Xcode care descrie modul de construire a produselor lor.În cele din urmă, am creat Carthage pentru că am vrut cel mai simplu instrument posibil – un manager de dependențe care își face treaba fără a prelua responsabilitatea Xcode și fără a crea muncă suplimentară pentru autorii de cadre. CocoaPods oferă multe caracteristici uimitoare pe care Carthage nu le va avea niciodată, în detrimentul unei complexități suplimentare.
Licență
Carthage este eliberat sub licența MIT.
Fotografia de fundal a antetului este eliberată sub licența CC BY-NC-SA 2.0. Fotografia originală a fost realizată de Richard Mortel.
.