Carthage est destiné à être le moyen le plus simple d’ajouter des frameworks à votre application Cocoa.
Carthage construit vos dépendances et vous fournit des frameworks binaires, mais vous conservez le contrôle total sur la structure et la configuration de votre projet. Carthage ne modifie pas automatiquement vos fichiers de projet ou vos paramètres de construction.
- Démarrage rapide
- Installation de Carthage
- Ajout de frameworks à une application
- Démarrage
- Construction de frameworks XCFrameworks
- indépendants de la plate-forme.indépendante de la plateforme
- Migration d’un projet de bundles de frameworks vers XCFrameworks
- Construction de bundles de frameworks spécifiques à la plateforme
- Si vous construisez pour macOS
- Si vous construisez pour iOS, tvOS, ou watchOS
- Pour toutes les plateformes
- (Optionnellement) Ajouter une phase de construction pour avertir des dépendances périmées
- Compatibilité de téléchargement du framework binaire Swift
.
- indépendants de la plate-forme.indépendante de la plateforme
- Exécution d’un projet qui utilise Carthage
- Ajout de frameworks aux tests unitaires ou à un framework
- Mise à niveau des frameworks
- Résolveur expérimental
- Dépendances imbriquées. dépendances
- Utilisation de submodules pour les dépendances
- Reconstruction automatique des dépendances
- Mise en cache des builds
- Finalisation de Bash/Zsh/Fish
- Construction de frameworks XCFrameworks
- Prise en charge de Carthage pour votre framework
- Partager vos schémas Xcode
- Résoudre les échecs de construction
- Taguer les versions stables
- Archiver les frameworks préconstruits dans un fichier zip
- Utiliser travis-ci pour télécharger vos frameworks préconstruits étiquetés
- Construisez des frameworks statiques pour accélérer les temps de lancement de votre application
- Déclarez votre compatibilité
- Problèmes connus
- Problème de symboles DWARFs
- CarthageKit
- Différences entre Carthage et CocoaPods
- License
- Démarrage rapide
- Installing Carthage
- Ajouter des frameworks à une application
- Début
- Construction de XCFrameworks indépendants de la plateforme (Xcode 12 et plus)
- Migration d’un projet des bundles de frameworks vers XCFrameworks
- Construction de paquets de frameworks spécifiques à une plateforme (par défaut pour Xcode 11 et inférieur)
- Si vous construisez pour macOS
- Si vous construisez pour iOS, tvOS ou watchOS
- Pour toutes les plateformes
- (Optionnellement) Ajouter une phase de construction pour avertir des dépendances périmées
- Compatibilité du téléchargement du framework binaire Swift
- Exécuter un projet qui utilise Carthage
- Ajouter des frameworks aux tests unitaires ou à un framework
- Mise à niveau des frameworks
- Résolveur expérimental
- Dépendances imbriquées
- Utiliser des submodules pour les dépendances
- Reconstruction automatique des dépendances
- Mise en cache des builds
- Complétion Bash/Zsh/Fish
- Prise en charge de Carthage pour votre framework
- Partagez vos schémas Xcode
- Résoudre les échecs de construction
- Tag stable releases
- Archiver les frameworks préconstruits dans un fichier zip
- Utiliser travis-ci pour télécharger vos frameworks pré-construits tagués
- Construire des frameworks statiques pour accélérer les temps de lancement de votre app
- Carthage 0.30.0 ou supérieur
- Carthage 0.29.0 ou inférieur
- Déclarez votre compatibilité
- Problèmes connus
- Problème de symbole DWARFs
- CarthageKit
- Différences entre Carthage et CocoaPods
- Licence
Démarrage rapide
-
Générez Carthage en exécutant
brew install carthage
ou choisissez une autre méthode d’installation -
Créer un Cartfile dans le même répertoire où se trouve votre
.xcodeproj
ou.xcworkspace
-
Lister les dépendances souhaitées dans le Cartfile, par exemple :
github "Alamofire/Alamofire" ~> 4.7.2
-
Exécutez
carthage update --use-xcframeworks
-
Un fichier
Cartfile.resolved
et un répertoireCarthage
apparaîtront dans le même répertoire où se trouve votre.xcodeproj
ou.xcworkspace
-
Glissez les paquets
.xcframework
construits deCarthage/Build
dans la section « Frameworks and Libraries » du projet Xcode de votre application. -
Si vous utilisez Carthage pour une application, sélectionnez « Embed & Sign », sinon « Do Not Embed ».
Pour un guide approfondi, lisez la suite de Adding frameworks to an application
Installing Carthage
Il existe plusieurs options pour installer Carthage:
-
Installer : Téléchargez et exécutez le fichier
Carthage.pkg
pour la dernière version, puis suivez les instructions à l’écran. Si vous installez le pkg via CLI, vous devrez peut-être exécutersudo chown -R $(whoami) /usr/local
d’abord. -
Homebrew : Vous pouvez utiliser Homebrew et installer l’outil
carthage
sur votre système simplement en exécutantbrew update
etbrew install carthage
. (note : si vous avez précédemment installé la version binaire de Carthage, vous devez supprimer/Library/Frameworks/CarthageKit.framework
). -
MacPorts : Vous pouvez utiliser MacPorts et installer l’outil
carthage
sur votre système simplement en exécutantsudo port selfupdate
etsudo port install carthage
. (note : si vous avez précédemment installé la version binaire de Carthage, vous devez supprimer/Library/Frameworks/CarthageKit.framework
). -
Depuis la source : Si vous souhaitez exécuter la dernière version de développement (qui peut être très instable ou incompatible), il suffit de cloner la branche
master
du dépôt, puis d’exécutermake install
. Requiert Xcode 10.0 (Swift 4.2).
Ajouter des frameworks à une application
Une fois que vous avez installé Carthage, vous pouvez commencer à ajouter des frameworks à votre projet. Notez que Carthage ne prend en charge que les frameworks dynamiques, qui ne sont disponibles que sur iOS 8 ou plus récent (ou toute version d’OS X).
Début
Construction de XCFrameworks indépendants de la plateforme (Xcode 12 et plus)
- Créer un Cartfile qui liste les frameworks que vous souhaitez utiliser dans votre projet.
- Exécuter
carthage update --use-xcframeworks
. Cela récupérera les dépendances dans un dossier Carthage/Checkouts et construira chacune d’entre elles ou téléchargera un XCFramework précompilé. - Sur l’onglet Paramètres généraux des cibles de votre application, dans la section Cadres, bibliothèques et contenu intégré, faites glisser et déposez chaque XCFramework que vous souhaitez utiliser à partir du dossier Carthage/Build sur le disque.
Migration d’un projet des bundles de frameworks vers XCFrameworks
Nous encourageons l’utilisation de XCFrameworks à partir de la version 0.37.0 (janvier 2021), et nous exigeons XCFrameworks lors de la construction sur un Apple Silicon Mac. Passer des bundles de frameworks discrets à XCFrameworks nécessite quelques modifications de votre projet :
Étapes de migration
- Supprimer votre dossier
Carthage/Build
pour supprimer tous les bundles de frameworks existants. - Construire de nouveaux XCFrameworks en exécutant
carthage build --use-xcframeworks
. Tout autre argument avec lequel vous construisez peut être fourni comme d’habitude. - Supprimez les références aux anciens frameworks dans chacune de vos cibles :
- Supprimez les références aux frameworks Carthage de la section Frameworks, Libraries, and Embedded Content de la cible et/ou de sa phase de construction Link Binary with Libraries.
- Supprimez les références aux frameworks Carthage de toute phase de construction Copy Files.
- Supprimez la phase de construction
carthage copy-frameworks
de la cible, si elle est présente.
- Ajoutez des références aux XCFrameworks dans chacune de vos cibles :
- Pour une cible d’application : dans l’onglet Paramètres généraux, dans la section Cadres, bibliothèques et contenu intégré, faites glisser et déposez chaque XCFramework que vous utilisez à partir du dossier Carthage/Build sur le disque.
- Pour une cible de framework : dans l’onglet Phases de construction, dans une phase Lier le binaire avec les bibliothèques, faites glisser et déposez chaque XCFramework que vous utilisez depuis le dossier Carthage/Build sur le disque.
Construction de paquets de frameworks spécifiques à une plateforme (par défaut pour Xcode 11 et inférieur)
Incompatibilité avec Xcode 12+ : Les plateformes multi-architectures ne sont pas prises en charge lors de la construction de bundles de frameworks dans Xcode 12 et plus. Préférez la construction avec XCFrameworks. Si vous devez construire des bundles de frameworks discrets, utilisez un fichier xcconfig de contournement.
Si vous construisez pour macOS
instructions spécifiques à macOS
- Créer un Cartfile qui liste les frameworks que vous souhaitez utiliser dans votre projet.
- Exécuter
carthage update --platform macOS
. Cela récupérera les dépendances dans un dossier Carthage/Checkouts et construira chacune d’entre elles ou téléchargera un framework précompilé. - Sur l’onglet Paramètres généraux de vos cibles d’application, dans la section Binaires embarqués, faites glisser et déposez chaque framework que vous souhaitez utiliser à partir du dossier Carthage/Build sur le disque.
En outre, vous devrez copier les symboles de débogage pour le débogage et le rapport de panne sur OS X.
- Sur l’onglet des paramètres des phases de construction de votre cible d’application, cliquez sur l’icône + et choisissez Nouvelle phase de copie de fichiers.
- Cliquez sur le menu déroulant Destination et sélectionnez Répertoire des produits.
- Pour chaque framework que vous utilisez, faites glisser et déposez son fichier dSYM correspondant.
Si vous construisez pour iOS, tvOS ou watchOS
Instructions spécifiques à la plateforme
-
Créer un Cartfile qui liste les frameworks que vous souhaitez utiliser dans votre projet.
-
Exécuter
carthage update
. Cela va récupérer les dépendances dans un dossier Carthage/Checkouts, puis construire chacune d’entre elles ou télécharger un framework précompilé. -
Ouvrir l’onglet Paramètres généraux des cibles de votre application. Pour Xcode 11.0 et les versions ultérieures, dans la section « Cadres, bibliothèques et contenu intégré », faites glisser et déposez chaque cadre que vous souhaitez utiliser depuis le dossier Carthage/Build sur le disque. Ensuite, dans la section « Embed », sélectionnez « Do Not Embed » dans le menu déroulant pour chaque élément ajouté. Pour Xcode 10.x et inférieur, dans la section « Cadres et bibliothèques liés », faites glisser et déposez chaque cadre que vous voulez utiliser à partir du dossier Carthage/Build sur le disque.
-
Sur l’onglet des paramètres des phases de construction de vos cibles d’application, cliquez sur l’icône + et choisissez Nouvelle phase de script d’exécution. Créez un script d’exécution dans lequel vous spécifiez votre shell (ex :
/bin/sh
), ajoutez le contenu suivant à la zone de script sous le shell :/usr/local/bin/carthage copy-frameworks
-
Créer un fichier nommé
input.xcfilelist
et un fichier nomméoutput.xcfilelist
-
Ajouter les chemins d’accès aux frameworks que vous voulez utiliser à votre
input.xcfilelist
. Par exemple:$(SRCROOT)/Carthage/Build/iOS/Result.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
-
Ajoutez les chemins vers les frameworks copiés dans le
output.xcfilelist
. Par exemple:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework
Avec les fichiers de sortie spécifiés à côté des fichiers d’entrée, Xcode n’a besoin d’exécuter le script que lorsque les fichiers d’entrée ont changé ou que les fichiers de sortie sont manquants. Cela signifie que les dirty builds seront plus rapides lorsque vous n’avez pas reconstruit les frameworks avec Carthage.
-
Ajouter le
input.xcfilelist
à la section « Listes de fichiers d’entrée » de la phase de script d’exécution de Carthage -
Ajouter le
output.xcfilelist
à la section « Listes de fichiers de sortie » de la phase de script d’exécution de Carthage
Ce script contourne un bogue de soumission à l’App Store déclenché par les binaires universels et garantit que les fichiers nécessaires liés au bitcode et les dSYM sont copiés lors de l’archivage.
Avec les informations de débogage copiées dans le répertoire des produits construits, Xcode sera capable de symboliser la trace de la pile chaque fois que vous vous arrêtez à un point d’arrêt. Cela vous permettra également d’avancer dans le code tiers dans le débogueur.
Lorsque vous archivez votre application pour la soumettre à l’App Store ou à TestFlight, Xcode copiera également ces fichiers dans le sous-répertoire dSYMs du
.xcarchive
bundle de votre application.Pour toutes les plateformes
En cours de route, Carthage aura créé certains artefacts de construction. Le plus important d’entre eux est le fichier Cartfile.resolved, qui liste les versions qui ont été effectivement construites pour chaque framework. Assurez-vous de commettre votre Cartfile.resolved, car toute autre personne utilisant le projet aura besoin de ce fichier pour construire les mêmes versions de frameworks.
(Optionnellement) Ajouter une phase de construction pour avertir des dépendances périmées
Vous pouvez ajouter une phase Run Script pour vous avertir automatiquement lorsqu’une de vos dépendances est périmée.
- Sur l’onglet des paramètres de vos cibles d’application
Build Phases
, cliquez sur l’icône+
et choisissezNew Run Script Phase
. Créez un script d’exécution dans lequel vous spécifiez votre shell (ex :/bin/sh
), ajoutez le contenu suivant dans la zone de script sous le shell :
/usr/local/bin/carthage outdated --xcode-warnings 2>/dev/null
Compatibilité du téléchargement du framework binaire Swift
Carthage vérifiera que les frameworks Swift (et mixtes Objective-C/Swift) téléchargés ont été construits avec la même version de Swift qui est utilisée localement. S’il y a un décalage de version, Carthage procédera à la construction du framework à partir des sources. Si le framework ne peut pas être construit à partir des sources, Carthage échouera.
Parce que Carthage utilise la sortie de
xcrun swift --version
pour déterminer la version locale de Swift, assurez-vous d’exécuter les commandes Carthage avec la chaîne d’outils Swift que vous avez l’intention d’utiliser. Pour de nombreux cas d’utilisation, rien de supplémentaire n’est nécessaire. Cependant, par exemple, si vous construisez un projet Swift 2.3 en utilisant Xcode 8.x, une approche pour spécifier votreswift
par défaut pourcarthage bootstrap
est d’utiliser la commande suivante :TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap
Exécuter un projet qui utilise Carthage
Après avoir terminé les étapes ci-dessus et poussé vos changements, les autres utilisateurs du projet n’ont qu’à récupérer le dépôt et exécuter
carthage bootstrap
pour commencer à utiliser les frameworks que vous avez ajoutés.Ajouter des frameworks aux tests unitaires ou à un framework
Utiliser Carthage pour les dépendances de n’importe quelle cible arbitraire est assez similaire à utiliser Carthage pour une application. La principale différence réside dans la façon dont les frameworks sont réellement configurés et liés dans Xcode.
Parce que les cibles de tests unitaires manquent la section Linked Frameworks and Libraries dans leur onglet General settings, vous devez plutôt faire glisser les frameworks construits vers la phase de construction Link Binaries With Libraries.
Dans la cible de test sous l’onglet Paramètres de construction, ajoutez
@loader_path/Frameworks
aux chemins de recherche Runpath s’ils ne sont pas déjà présents.Dans de rares cas, vous pouvez également copier chaque dépendance dans le produit de construction (par ex, pour intégrer les dépendances dans le framework externe, ou s’assurer que les dépendances sont présentes dans un bundle de test). Pour ce faire, créez une nouvelle phase de build Copy Files avec la destination Frameworks, puis ajoutez-y également la référence du framework. Vous ne devriez pas utiliser la commande
carthage copy-frameworks
puisque les bundles de test n’ont pas besoin de frameworks dépouillés, et l’exécution d’instances simultanées decopy-frameworks
(avec les constructions parallèles activées) n’est pas supportée.Mise à niveau des frameworks
Si vous avez modifié votre Cartfile, ou si vous voulez mettre à jour vers les versions les plus récentes de chaque framework (sous réserve des exigences que vous avez spécifiées), exécutez simplement la commande
carthage update
à nouveau.Si vous voulez seulement mettre à jour une, ou des, dépendances spécifiques, passez-les comme une liste séparée par des espaces à la commande
update
. par exemplecarthage update Box
ou
carthage update Box Result
Résolveur expérimental
Une réécriture de la logique de mise à niveau des frameworks a été faite dans le but d’augmenter la vitesse et de réduire l’utilisation de la mémoire. Il s’agit actuellement d’une fonctionnalité opt-in. Elle peut être utilisée en passant
--new-resolver
à la commande de mise à jour, par exemple,carthage update --new-resolver Box
Si vous rencontrez des problèmes de performance lors des mises à jour, veuillez essayer le nouveau résolveur
Dépendances imbriquées
Si le framework que vous voulez ajouter à votre projet a des dépendances explicitement listées dans un Cartfile, Carthage les récupérera automatiquement pour vous. Vous devrez ensuite les glisser vous-même dans votre projet depuis le dossier Carthage/Build.
Si le framework intégré dans votre projet a des dépendances vers d’autres frameworks, vous devez les lier à la cible de l’application (même si la cible de l’application n’a pas de dépendance vers ces frameworks et ne les utilise jamais).
Utiliser des submodules pour les dépendances
Par défaut, Carthage extraira directement les fichiers sources des dépendances dans le dossier de votre projet, vous laissant le soin de les commiter ou de les ignorer comme vous le souhaitez. Si vous souhaitez avoir des dépendances disponibles en tant que submodules Git à la place (peut-être pour que vous puissiez commiter et pousser des changements en leur sein), vous pouvez exécuter
carthage update
oucarthage checkout
avec le drapeau--use-submodules
.Lorsqu’il est exécuté de cette façon, Carthage écrira dans les fichiers
.gitmodules
et.git/config
de votre dépôt, et mettra automatiquement à jour les submodules lorsque les versions des dépendances changent.Reconstruction automatique des dépendances
Si vous voulez travailler sur vos dépendances pendant le développement, et que vous voulez qu’elles soient automatiquement reconstruites lorsque vous construisez votre projet parent, vous pouvez ajouter une phase de construction Run Script qui invoque Carthage comme suit:
/usr/local/bin/carthage build --platform "$PLATFORM_NAME" --project-directory "$SRCROOT"
Notez que vous devriez utiliser des submodules avant de faire cela, car les checkouts simples ne doivent pas être modifiés directement.
Mise en cache des builds
Par défaut, Carthage reconstruira une dépendance indépendamment du fait qu’il s’agisse de la même version résolue que précédemment. Passer le
--cache-builds
fera en sorte que carthage évite de reconstruire une dépendance s’il le peut. Voir les informations sur les fichiers de version pour plus de détails sur la façon dont Carthage effectue cette mise en cache.Note : Pour le moment,
--cache-builds
est incompatible avec--use-submodules
. L’utilisation des deux aura pour résultat que la copie de travail et les modifications commises à votre dépendance de sous-module ne seront pas correctement reconstruites. Voir #1785 pour plus de détails.Complétion Bash/Zsh/Fish
La complétion automatique des commandes et des options de Carthage est disponible comme documenté dans Bash/Zsh/Fish Completion.
Prise en charge de Carthage pour votre framework
Carthage ne prend officiellement en charge que les frameworks dynamiques. Les frameworks dynamiques peuvent être utilisés sur n’importe quelle version d’OS X, mais seulement sur iOS 8 ou plus. En outre, depuis la version 0.30.0, Carthage prend en charge les frameworks statiques.
Parce que Carthage n’a pas de liste de paquets centralisée, ni de format de spécification de projet, la plupart des frameworks devraient se construire automatiquement.
Les exigences spécifiques de tout projet de framework sont listées ci-dessous.
Partagez vos schémas Xcode
Carthage ne construira que les schémas Xcode qui sont partagés depuis votre
.xcodeproj
. Vous pouvez voir si tous vos schémas prévus se construisent avec succès en exécutantcarthage build --no-skip-current
, puis en vérifiant le dossier Carthage/Build.Si un schéma important n’est pas construit lorsque vous exécutez cette commande, ouvrez Xcode et assurez-vous que le schéma est marqué comme partagé, afin que Carthage puisse le découvrir.
Résoudre les échecs de construction
Si vous rencontrez des échecs de construction dans
carthage build --no-skip-current
, essayez d’exécuterxcodebuild -scheme SCHEME -workspace WORKSPACE build
ouxcodebuild -scheme SCHEME -project PROJECT build
(avec les valeurs réelles) et voyez si le même échec se produit là. Cela devrait, espérons-le, donner suffisamment d’informations pour résoudre le problème.Si vous avez plusieurs versions des outils de développement Apple installées (une bêta de Xcode, par exemple), utilisez
xcode-select
pour changer la version que Carthage utilise.Si vous n’êtes toujours pas en mesure de construire votre framework avec Carthage, veuillez ouvrir un problème et nous serons heureux de vous aider !
Tag stable releases
Carthage détermine quelles versions de votre framework sont disponibles en recherchant parmi les tags publiés sur le dépôt, et en essayant d’interpréter chaque nom de tag comme une version sémantique. Par exemple, dans la balise
v1.2
, la version sémantique est 1.2.0.Les balises sans aucun numéro de version, ou avec des caractères suivant le numéro de version (par ex,
1.2-alpha-1
) ne sont actuellement pas prises en charge et seront ignorées.Archiver les frameworks préconstruits dans un fichier zip
Carthage peut utiliser automatiquement des frameworks préconstruits, au lieu de construire à partir de zéro, s’ils sont attachés à une Release GitHub sur le dépôt de votre projet ou via un fichier de définition de projet binaire.
Pour offrir des frameworks préconstruits pour un tag spécifique, les binaires pour toutes les plateformes supportées doivent être zippés ensemble dans une archive, et cette archive doit être attachée à une Release publiée correspondant à ce tag. La pièce jointe doit inclure
.framework
dans son nom (par exemple,ReactiveCocoa.framework.zip
), pour indiquer à Carthage qu’elle contient des binaires. La structure de répertoire de l’archive est libre mais, les cadres ne doivent apparaître qu’une seule fois dans l’archive car ils seront copiés dansCarthage/Build/<platform>
en fonction de leur nom (par exempleReactiveCocoa.framework
).Vous pouvez effectuer l’opération d’archivage avec carthage lui-même en utilisant:
-carthage build --no-skip-current-carthage archive YourFrameworkName
ou alternativement
carthage build --archive
Les ébauches de releases seront automatiquement ignorées, même si elles correspondent à l’étiquette souhaitée.
Utiliser travis-ci pour télécharger vos frameworks pré-construits tagués
Il est possible d’utiliser travis-ci afin de construire et de télécharger vos releases tagués.
-
Installer travis CLI avec
gem install travis
-
Configurer travis-ci pour votre dépôt (étapes 1 et 2)
-
Créer le fichier
.travis.yml
à la racine de votre dépôt basé sur ce modèle. DéfinissezFRAMEWORK_NAME
à la valeur correcte.Remplacez PROJECT_PLACEHOLDER et SCHEME_PLACEHOLDER
Si vous utilisez un espace de travail au lieu d’un projet, supprimez la ligne xcode_project et décommentez la ligne xcode_workspace.
Le projet doit être au format : MonProjet.xcodeproj
L’espace de travail doit être au format : MonEspace de Travail.xcworkspace
N’hésitez pas à mettre à jour la valeur
xcode_sdk
vers un autre SDK, notez que le test sur le SDK iphoneos nécessiterait de télécharger une identité de signature de codePour plus d’informations, vous pouvez visiter les docs travis pour les projets objective-c
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
-
Run
travis setup releases
, suivez la documentation iciCette commande codera vos informations d’identification GitHub dans le fichier
.travis.yml
afin de permettre à travis de télécharger la version sur GitHub.comLorsque l’on vous demande le fichier à télécharger, entrez$FRAMEWORK_NAME.framework.zip
-
Mettre à jour la section de déploiement pour qu’elle soit exécutée sur les balises:
Dans
.travis.yml
localiser:on: repo: repo/repo
Et ajouter
tags: true
etskip_cleanup: true
:skip_cleanup: trueon: repo: repo/repo tags: true
Ceci permettra à travis de savoir qu’il faut créer un déploiement lorsqu’un nouveau tag est poussé et empêchera travis de nettoyer le fichier zip généré
Construire des frameworks statiques pour accélérer les temps de lancement de votre app
Si vous intégrez de nombreux frameworks dynamiques dans votre app, ses temps de lancement pré-main peuvent être assez lents. Carthage est capable d’aider à atténuer ce problème en construisant vos frameworks dynamiques comme des frameworks statiques à la place. Les frameworks statiques peuvent être liés directement à votre application ou fusionnés dans un framework dynamique plus important avec quelques modifications simples de votre flux de travail, ce qui peut entraîner des réductions spectaculaires des temps de lancement pré-main.
Carthage 0.30.0 ou supérieur
Depuis la version 0.30.0, le projet Carthage déploie le support des frameworks liés statiquement écrits en Swift ou Objective-C, dont le support a été introduit dans Xcode 9.4. Notez cependant qu’il est spécifiquement question de frameworks, d’où les bundles Darwin avec une extension .framework et des archives d’objets liés statiquement à l’intérieur. Carthage ne prend actuellement pas en charge les schémas de bibliothèques statiques, et il n’est pas prévu d’introduire leur prise en charge à l’avenir.
Le flux de travail diffère à peine :
- Vous devez toujours cocher les schémas de votre projet conforme à Carthage comme partagé dans Produit > Schéma > Gérer les schémas…, tout comme avec les binaires dynamiques
- Vous devez toujours lier contre les .frameworks dans les phases de construction de votre projet, tout comme avec les binaires dynamiques
Mais :
- Dans la cible Cocoa Framework de votre projet conforme à Carthage, dans les paramètres de construction, section Liaison, définissez le type Mach-O sur Static Library
- Vos frameworks liés statiquement seront construits à ./Carthage/Build/$(PLATFORM_NAME)/Static
- Vous ne devez ajouter aucun des frameworks statiques comme fichiers d’entrée/sortie dans carthage copy-frameworks Build Phase
Carthage 0.29.0 ou inférieur
Voir la doc StaticFrameworks pour plus de détails.
Veuillez noter que quelques mises en garde s’appliquent à cette approche :
- Les frameworks statiques Swift ne sont pas officiellement pris en charge par Apple
- C’est un flux de travail avancé qui n’est pas intégré à Carthage, YMMV
Déclarez votre compatibilité
Vous voulez annoncer que votre projet peut être utilisé avec Carthage ? Vous pouvez ajouter un badge de compatibilité:
… à votre
README
, en insérant simplement le Markdown suivant:(https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
Problèmes connus
Problème de symbole DWARFs
Le framework préconstruit ne peut pas être débogué en utilisant l’exécution de pas sur une autre machine que celle sur laquelle le framework a été construit. Simplement
carthage bootstrap/build/update --no-use-binaries
devrait corriger cela, mais pour une solution de contournement plus automatisée, voir #924. Dupe rdar://23551273 si vous voulez qu’Apple corrige la cause première de ce problème.CarthageKit
La plupart des fonctionnalités de l’outil de ligne de commande
carthage
sont en fait encapsulées dans un framework nommé CarthageKit.Si vous êtes intéressé par l’utilisation de Carthage dans le cadre d’un autre outil, ou peut-être par l’extension des fonctionnalités de Carthage, jetez un œil au code source de CarthageKit pour voir si l’API correspond à vos besoins.
Différences entre Carthage et CocoaPods
CocoaPods est un gestionnaire de dépendances de longue date pour Cocoa. Alors pourquoi Carthage a-t-il été créé ?
Tout d’abord, CocoaPods (par défaut) crée et met à jour automatiquement un espace de travail Xcode pour votre application et toutes les dépendances. Carthage construit des binaires de framework en utilisant
xcodebuild
, mais laisse la responsabilité de leur intégration à l’utilisateur. L’approche de CocoaPods est plus facile à utiliser, tandis que celle de Carthage est flexible et discrète.Le but de CocoaPods est listé dans son README comme suit :
… améliorer la découvrabilité et l’engagement dans les bibliothèques open-source tierces, en créant un écosystème plus centralisé.
En revanche, Carthage a été créé comme un gestionnaire de dépendances décentralisé. Il n’y a pas de liste centrale de projets, ce qui réduit le travail de maintenance et évite tout point central de défaillance. Cependant, la découverte des projets est plus difficile – les utilisateurs doivent recourir aux pages Trending de GitHub ou à d’autres pages similaires.
Les projets CocoaPods doivent également avoir ce que l’on appelle un fichier podspec, qui comprend des métadonnées sur le projet et spécifie comment il doit être construit. Carthage utilise
xcodebuild
pour construire les dépendances, au lieu de les intégrer dans un seul espace de travail, il n’a pas de fichier de spécification similaire mais vos dépendances doivent inclure leur propre projet Xcode qui décrit comment construire leurs produits.En fin de compte, nous avons créé Carthage parce que nous voulions l’outil le plus simple possible-un gestionnaire de dépendances qui fait le travail sans prendre la responsabilité de Xcode, et sans créer de travail supplémentaire pour les auteurs de frameworks. CocoaPods offre de nombreuses fonctionnalités étonnantes que Carthage n’aura jamais, au prix d’une complexité supplémentaire.
Licence
Carthage est publié sous la licence MIT.
La photo de la toile de fond de l’en-tête est publiée sous la licence CC BY-NC-SA 2.0. Photo originale par Richard Mortel.
- Démarrage