Carthage / Carthage

author
22 minutes, 4 seconds Read

Carthage pretende ser la forma más sencilla de añadir frameworks a tu aplicación Cocoa.

Carthage construye tus dependencias y te proporciona frameworks binarios, pero mantienes el control total sobre la estructura y configuración de tu proyecto. Carthage no modifica automáticamente los archivos de su proyecto o su configuración de construcción.

  • Inicio rápido
  • Instalación de Carthage
  • Adición de frameworks a una aplicación
    • Introducción
      • Construcción de plataformasindependiente de XCFrameworks
        • Migrando un proyecto desde paquetes de frameworks a XCFrameworks
      • Construyendo paquetes de frameworks específicos de la plataforma
        • Si estás construyendo para macOS
        • Si estás construyendo para iOS, tvOS, o watchOS
      • Para todas las plataformas
      • (Opcionalmente) Añade la fase de compilación para advertir sobre las dependencias obsoletas
      • Compatibilidad de descarga del framework binario de Swift
    • Ejecutar un proyecto que utiliza Carthage
    • Añadir frameworks a las pruebas unitarias o a un framework
    • Actualizar frameworks
      • Resolver experimentos
    • Anidar dependencias
    • Uso de submódulos para dependencias
    • Reconstrucción automática de dependencias
    • Cacheo de compilaciones
    • Terminación de Bash/Zsh/Fish
  • Soporte de Carthage para su framework
    • Compartir sus esquemas de Xcode
    • Resolver fallos de compilación
    • Etiquetar versiones estables
    • Archivar frameworks precompilados en un archivo zip
      • Utilizar travis-ci para subir tus frameworks precompilados etiquetados
    • Construye frameworks estáticos para acelerar los tiempos de lanzamiento de tu aplicación
    • Declara tu compatibilidad
  • Problemas conocidos
    • Problema con los símbolos DWARF
  • CarthageKit
  • Diferencias entre Carthage y CocoaPods
  • Licencia

Inicio rápido

  1. Obtenga Carthage ejecutando brew install carthage o elija otro método de instalación

  2. Cree un Cartfile en el mismo directorio donde está su .xcodeproj o .xcworkspace

  3. Liste las dependencias deseadas en el Cartfile, por ejemplo:

    github "Alamofire/Alamofire" ~> 4.7.2
  4. Ejecute carthage update --use-xcframeworks

  5. Aparecerá un archivo Cartfile.resolved y un directorio Carthage en el mismo directorio donde está su .xcodeproj o .xcworkspace

  6. Arrastre los paquetes .xcframework construidos desde Carthage/Build a la sección «Frameworks y bibliotecas» del proyecto Xcode de su aplicación.

  7. Si está utilizando Carthage para una aplicación, seleccione «Incrustar &Señal», de lo contrario «No incrustar».

Para una guía en profundidad, siga leyendo desde Añadir frameworks a una aplicación

Instalar Carthage

Hay múltiples opciones para instalar Carthage:

  • Instalador: Descargue y ejecute el archivo Carthage.pkg para la última versión, luego siga las instrucciones en pantalla. Si está instalando el paquete a través de la CLI, es posible que tenga que ejecutar sudo chown -R $(whoami) /usr/local primero.

  • Homebrew: Puede utilizar Homebrew e instalar la herramienta carthage en su sistema simplemente ejecutando brew update y brew install carthage. (Nota: si ha instalado previamente la versión binaria de Carthage, debe eliminar /Library/Frameworks/CarthageKit.framework).

  • MacPorts: Puede utilizar MacPorts e instalar la herramienta carthage en su sistema simplemente ejecutando sudo port selfupdate y sudo port install carthage. (Nota: si ha instalado previamente la versión binaria de Carthage, debe eliminar /Library/Frameworks/CarthageKit.framework).

  • Desde la fuente: Si desea ejecutar la última versión de desarrollo (que puede ser muy inestable o incompatible), simplemente clone la rama master del repositorio, y luego ejecute make install. Requiere Xcode 10.0 (Swift 4.2).

Añadir frameworks a una aplicación

Una vez que tengas Carthage instalado, puedes empezar a añadir frameworks a tu proyecto. Tenga en cuenta que Carthage sólo admite frameworks dinámicos, que sólo están disponibles en iOS 8 o posterior (o cualquier versión de OS X).

Comenzando

Construyendo XCFrameworks independientes de la plataforma (Xcode 12 y superior)

  1. Cree un Cartfile que enumere los frameworks que le gustaría utilizar en su proyecto.
  2. Ejecute carthage update --use-xcframeworks. Esto buscará las dependencias en una carpeta Carthage/Checkouts y construirá cada una de ellas o descargará un XCFramework precompilado.
  3. En la pestaña de configuración general de sus objetivos de aplicación, en la sección Frameworks, Librerías y Contenido Incrustado, arrastre y suelte cada XCFramework que desee utilizar desde la carpeta Carthage/Build del disco.
Migrar un proyecto de paquetes de frameworks a XCFrameworks

Alentamos el uso de XCFrameworks a partir de la versión 0.37.0 (enero de 2021), y requerimos XCFrameworks cuando se construye en un Apple Silicon Mac. El cambio de paquetes discretos de framework a XCFrameworks requiere algunos cambios en su proyecto:

Pasos de la migración

  1. Borra su carpeta Carthage/Build para eliminar cualquier paquete de framework existente.
  2. Construya nuevos XCFrameworks ejecutando carthage build --use-xcframeworks. Cualquier otro argumento con el que construya puede ser proporcionado como normal.
  3. Eliminar las referencias a los antiguos frameworks en cada uno de sus objetivos:
    • Eliminar las referencias a los frameworks de Carthage de la sección Frameworks, Librerías y Contenido Embebido del objetivo y/o su fase de construcción Link Binary with Libraries.
    • Eliminar las referencias a los frameworks de Carthage de cualquier fase de construcción Copy Files.
    • Eliminar la fase de construcción carthage copy-frameworks del objetivo, si está presente.
  4. Añadir referencias a XCFrameworks en cada uno de sus objetivos:
    • Para un objetivo de aplicación: En la pestaña de configuración general, en la sección Frameworks, Bibliotecas y Contenido incrustado, arrastrar y soltar cada XCFramework que utilice desde la carpeta Carthage/Build del disco.
    • Para un objetivo de framework: En la pestaña Build Phases, en una fase Link Binary with Libraries, arrastre y suelte cada XCFramework que utilice desde la carpeta Carthage/Build en el disco.

Construir paquetes de framework específicos de la plataforma (por defecto para Xcode 11 e inferior)

Incompatibilidad con Xcode 12+: Las plataformas multiarquitectura no son compatibles cuando se construyen paquetes de marcos en Xcode 12 y superior. Prefiera construir con XCFrameworks. Si necesita construir paquetes de frameworks discretos, utilice un archivo xcconfig como solución.

Si está construyendo para macOS

instrucciones específicas para macOS

  1. Cree un Cartfile que enumere los frameworks que desea utilizar en su proyecto.
  2. Ejecute carthage update --platform macOS. Esto buscará las dependencias en una carpeta Carthage/Checkouts y construirá cada una de ellas o descargará un framework precompilado.
  3. En la pestaña de configuración general de tus objetivos de aplicación, en la sección de binarios incrustados, arrastra y suelta cada uno de los frameworks que quieras utilizar desde la carpeta Carthage/Build en el disco.

Además, necesitarás copiar los símbolos de depuración para la depuración y el informe de fallos en OS X.

  1. En la pestaña de configuración de las fases de construcción de su objetivo de aplicación, haga clic en el icono + y elija Nueva fase de copia de archivos.
  2. Haga clic en el menú desplegable Destino y seleccione Directorio de productos.
  3. Para cada marco que esté utilizando, arrastre y suelte su correspondiente archivo dSYM.
Si estás construyendo para iOS, tvOS o watchOS

Instrucciones específicas de la plataforma

  1. Crea un Cartfile que enumere los frameworks que te gustaría utilizar en tu proyecto.

  2. Ejecuta carthage update. Esto buscará las dependencias en una carpeta Carthage/Checkouts, y luego construirá cada una o descargará un framework precompilado.

  3. Abre la pestaña de ajustes generales de tus objetivos de aplicación. Para Xcode 11.0 y superior, en la sección «Frameworks, bibliotecas y contenido incrustado», arrastra y suelta cada uno de los frameworks que quieras utilizar desde la carpeta Carthage/Build del disco. A continuación, en la sección «Incrustar», seleccione «No incrustar» en el menú desplegable para cada elemento añadido. Para Xcode 10.x y versiones inferiores, en la sección «Linked Frameworks and Libraries», arrastre y suelte cada marco que desee utilizar desde la carpeta Carthage/Build del disco.

  4. En la pestaña de configuración de las fases de compilación de sus objetivos de aplicación, haga clic en el icono + y seleccione New Run Script Phase. Cree un Script de Ejecución en el que especifique su shell (por ejemplo: /bin/sh), añada el siguiente contenido al área del script debajo del shell:

    /usr/local/bin/carthage copy-frameworks
  5. Cree un archivo llamado input.xcfilelist y un archivo llamado output.xcfilelist

  6. Añada las rutas de los frameworks que desea utilizar a su input.xcfilelist. Por ejemplo:

    $(SRCROOT)/Carthage/Build/iOS/Result.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
  7. Agrega las rutas a los frameworks copiados al output.xcfilelist. Por ejemplo:

    $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework

    Con los archivos de salida especificados junto a los archivos de entrada, Xcode sólo necesita ejecutar el script cuando los archivos de entrada han cambiado o los archivos de salida faltan. Esto significa que las construcciones sucias serán más rápidas cuando no hayas reconstruido los frameworks con Carthage.

  8. Añadir el input.xcfilelist a la sección «Listas de archivos de entrada» de la fase de script de ejecución de Carthage

  9. Añadir el output.xcfilelist a la sección «Listas de archivos de salida» de la fase de script de ejecución de Carthage

Este script soluciona un error de envío a la App Store provocado por los binarios universales y garantiza que los archivos necesarios relacionados con el código de bits y los dSYM se copien al archivar.

Con la información de depuración copiada en el directorio de productos construidos, Xcode podrá simbolizar el seguimiento de la pila cada vez que se detenga en un punto de interrupción. Esto también le permitirá pasar a través de código de terceros en el depurador.

Al archivar su aplicación para el envío a la App Store o TestFlight, Xcode también copiará estos archivos en el subdirectorio dSYMs del paquete .xcarchive de su aplicación.

Para todas las plataformas

A lo largo del camino, Carthage habrá creado algunos artefactos de construcción. El más importante de ellos es el archivo Cartfile.resolved, que enumera las versiones que realmente se construyeron para cada marco. Asegúrese de confirmar su Cartfile.resolved, porque cualquier otra persona que utilice el proyecto necesitará ese archivo para construir las mismas versiones de framework.

(Opcionalmente) Añadir fase de construcción para advertir sobre las dependencias obsoletas

Puede añadir una fase de Ejecutar Script para advertirle automáticamente cuando una de sus dependencias está fuera de fecha.

  1. En la pestaña de configuración de sus objetivos de aplicación Build Phases, haga clic en el icono + y seleccione New Run Script Phase. Cree una secuencia de comandos de ejecución en la que especifique su shell (por ejemplo: /bin/sh), añada el siguiente contenido al área de la secuencia de comandos debajo del shell:
/usr/local/bin/carthage outdated --xcode-warnings 2>/dev/null

Compatibilidad de la descarga del marco binario de Swift

Carthage comprobará que los marcos de trabajo de Swift (y mixtos de Objective-C/Swift) descargados se construyeron con la misma versión de Swift que se utiliza localmente. Si hay un desajuste de versión, Carthage procederá a construir el framework desde el código fuente. Si el framework no puede construirse desde el código fuente, Carthage fallará.

Debido a que Carthage utiliza la salida de xcrun swift --version para determinar la versión local de Swift, asegúrate de ejecutar los comandos de Carthage con la cadena de herramientas Swift que pretendes utilizar. Para muchos casos de uso, no se necesita nada adicional. Sin embargo, por ejemplo, si está construyendo un proyecto Swift 2.3 utilizando Xcode 8.x, un enfoque para especificar su swift por defecto para carthage bootstrap es utilizar el siguiente comando:

TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap

Ejecutar un proyecto que utiliza Carthage

Después de haber terminado los pasos anteriores y empujado sus cambios, otros usuarios del proyecto sólo tiene que obtener el repositorio y ejecutar carthage bootstrap para empezar con los marcos que ha añadido.

Añadir frameworks a las pruebas unitarias o a un framework

Usar Carthage para las dependencias de cualquier objetivo arbitrario es bastante similar a usar Carthage para una aplicación. La principal diferencia radica en cómo se configuran y enlazan realmente los frameworks en Xcode.

Debido a que los objetivos de pruebas unitarias carecen de la sección de Frameworks y Bibliotecas Enlazadas en su pestaña de ajustes generales, en su lugar debes arrastrar los frameworks construidos a la fase de construcción Link Binaries With Libraries.

En el objetivo de prueba bajo la pestaña Build Settings, añada @loader_path/Frameworks a la Runpath Search Paths si no está ya presente.

En casos raros, es posible que desee también copiar cada dependencia en el producto de construcción (por ejemplo, para incrustar las dependencias dentro del marco externo, o asegurarse de que las dependencias están presentes en un paquete de prueba). Para ello, crea una nueva fase de compilación de Copy Files con el destino Frameworks, y luego añade la referencia del framework allí también. No debería usar el comando carthage copy-frameworks ya que los paquetes de prueba no necesitan que se despojen de los frameworks, y la ejecución de instancias concurrentes de copy-frameworks (con las construcciones paralelas activadas) no está soportada.

Actualizar frameworks

Si ha modificado su Cartfile, o quiere actualizar a las versiones más nuevas de cada framework (sujeto a los requisitos que ha especificado), simplemente ejecute el comando carthage update de nuevo.

Si sólo desea actualizar una, o determinadas, dependencias, páselas como una lista separada por espacios al comando update. p.ej.

carthage update Box

o

carthage update Box Result
Resolvedor Experimental

Se ha hecho una reescritura de la lógica para actualizar los frameworks con el objetivo de aumentar la velocidad y reducir el uso de memoria. Actualmente es una característica opt-in. Se puede utilizar pasando --new-resolver al comando de actualización, por ejemplo,

carthage update --new-resolver Box

Si está experimentando problemas de rendimiento durante las actualizaciones, por favor, pruebe el nuevo resolvedor

Dependencias anidadas

Si el framework que quiere añadir a su proyecto tiene dependencias explícitamente listadas en un Cartfile, Carthage las recuperará automáticamente por usted. Luego tendrás que arrastrarlos tú mismo a tu proyecto desde la carpeta Carthage/Build.

Si el framework incrustado en tu proyecto tiene dependencias de otros frameworks debes enlazarlos al objetivo de la aplicación (incluso si el objetivo de la aplicación no tiene dependencia de esos frameworks y nunca los usa).

Usar submódulos para las dependencias

Por defecto, Carthage comprobará directamente los archivos fuente de las dependencias en la carpeta de tu proyecto, dejándote que los confirmes o los ignores a tu elección. Si desea tener las dependencias disponibles como submódulos Git en su lugar (tal vez para que pueda confirmar y empujar los cambios dentro de ellos), puede ejecutar carthage update o carthage checkout con la bandera --use-submodules.

Cuando se ejecuta de esta manera, Carthage escribirá en los archivos .gitmodules y .git/config de su repositorio, y actualizará automáticamente los submódulos cuando las versiones de las dependencias cambien.

Reconstruir automáticamente las dependencias

Si quieres trabajar en tus dependencias durante el desarrollo, y quieres que se reconstruyan automáticamente cuando construyas tu proyecto padre, puedes añadir una fase de construcción Run Script que invoque a Carthage así:

/usr/local/bin/carthage build --platform "$PLATFORM_NAME" --project-directory "$SRCROOT"

Ten en cuenta que deberías usar submódulos antes de hacer esto, porque las comprobaciones simples no deberían modificarse directamente.

Caching builds

Por defecto Carthage reconstruirá una dependencia sin importar si es la misma versión resuelta que antes. Pasar el --cache-builds hará que carthage evite reconstruir una dependencia si puede. Consulte la información sobre los archivos de versión para obtener detalles sobre cómo Carthage realiza este almacenamiento en caché.

Nota: En este momento --cache-builds es incompatible con --use-submodules. El uso de ambos resultará en la copia de trabajo y los cambios comprometidos a su dependencia submódulo no ser reconstruido correctamente. Ver #1785 para más detalles.

Completación de Bash/Zsh/Fish

La autocompletación de los comandos y opciones de Carthage están disponibles como se documenta en Bash/Zsh/Fish Completion.

Soportando Carthage para su framework

Carthage sólo soporta oficialmente frameworks dinámicos. Los frameworks dinámicos se pueden utilizar en cualquier versión de OS X, pero sólo en iOS 8 o posterior. Además, desde la versión 0.30.0 Carthage soporta frameworks estáticos.

Debido a que Carthage no tiene una lista de paquetes centralizada, ni un formato de especificación de proyectos, la mayoría de los frameworks deberían construirse automáticamente.

Los requisitos específicos de cualquier proyecto de framework se enumeran a continuación.

Comparte tus esquemas de Xcode

Carthage sólo construirá los esquemas de Xcode que se compartan desde tu .xcodeproj. Puedes ver si todos tus esquemas previstos se construyen con éxito ejecutando carthage build --no-skip-current, y luego comprobando la carpeta Carthage/Build.

Si un esquema importante no se construye cuando ejecutas ese comando, abre Xcode y asegúrate de que el esquema está marcado como Shared, para que Carthage pueda descubrirlo.

Resolver los fallos de construcción

Si encuentra fallos de construcción en carthage build --no-skip-current, intente ejecutar xcodebuild -scheme SCHEME -workspace WORKSPACE build o xcodebuild -scheme SCHEME -project PROJECT build (con los valores reales) y vea si el mismo fallo ocurre allí. Esto debería dar suficiente información para resolver el problema.

Si tiene varias versiones de las herramientas de desarrollo de Apple instaladas (una beta de Xcode, por ejemplo), utilice xcode-select para cambiar la versión que utiliza Carthage.

Si todavía no eres capaz de construir tu framework con Carthage, por favor abre una incidencia y estaremos encantados de ayudarte

Etiqueta de versiones estables

Carthage determina qué versiones de tu framework están disponibles buscando a través de las etiquetas publicadas en el repositorio, y tratando de interpretar cada nombre de etiqueta como una versión semántica. Por ejemplo, en la etiqueta v1.2, la versión semántica es 1.2.0.

Las etiquetas sin ningún número de versión, o con cualquier carácter a continuación del número de versión (por ejemplo, 1.2-alpha-1) actualmente no son compatibles, y serán ignoradas.

Archivo de frameworks precompilados en un archivo zip

Carthage puede utilizar automáticamente frameworks precompilados, en lugar de construir desde cero, si se adjuntan a un GitHub Release en el repositorio de su proyecto o a través de un archivo de definición de proyecto binario.

Para ofrecer frameworks preconstruidos para una etiqueta específica, los binarios para todas las plataformas soportadas deben ser comprimidos juntos en un archivo, y ese archivo debe adjuntarse a una Release publicada correspondiente a esa etiqueta. El archivo adjunto debe incluir .framework en su nombre (por ejemplo, ReactiveCocoa.framework.zip), para indicar a Carthage que contiene binarios. La estructura de directorios del archivo es libre pero, los frameworks sólo deben aparecer una vez en el archivo ya que se copiarán en Carthage/Build/<platform> en función de su nombre (por ejemplo, ReactiveCocoa.framework).

Puede realizar la operación de archivado con el propio Carthage utilizando:

-carthage build --no-skip-current-carthage archive YourFrameworkName

o alternativamente

carthage build --archive

Los borradores de Release serán automáticamente ignorados, aunque se correspondan con la etiqueta deseada.

Utilizar travis-ci para subir sus frameworks precompilados etiquetados

Es posible utilizar travis-ci para construir y subir sus releases etiquetados.

  1. Instale travis CLI con gem install travis

  2. Configure travis-ci para su repositorio (Pasos 1 y 2)

  3. Cree el archivo .travis.yml en la raíz de su repositorio basado en esa plantilla. Ajuste FRAMEWORK_NAME al valor correcto.

    Reemplace PROJECT_PLACEHOLDER y SCHEME_PLACEHOLDER

    Si está utilizando un espacio de trabajo en lugar de un proyecto elimine la línea xcode_project y descomente la línea xcode_workspace.

    El proyecto debe tener el formato: MiProyecto.xcodeproj

    El espacio de trabajo debe tener el formato: MiEspacioDeTrabajo.xcworkspace

    Siéntase libre de actualizar el valor de xcode_sdk a otro SDK, tenga en cuenta que la prueba en iphoneos SDK requeriría que usted cargue una identidad de firma de código

    Para más información puede visitar 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. Ejecute travis setup releases, siga la documentación aquí

    Este comando codificará sus credenciales de GitHub en el archivo .travis.yml para que travis suba la versión a GitHub.comCuando se le pida el archivo a subir, introduzca $FRAMEWORK_NAME.framework.zip

  5. Actualice la sección de despliegue para que se ejecute en las etiquetas:

    En .travis.yml localice:

    on: repo: repo/repo

    Y añada tags: true y skip_cleanup: true:

    skip_cleanup: trueon: repo: repo/repo tags: true

    Eso hará que travis sepa que debe crear un despliegue cuando se empuje una nueva etiqueta y evitará que travis limpie el archivo zip generado

Construye frameworks estáticos para acelerar los tiempos de lanzamiento de tu app

Si incrustas muchos frameworks dinámicos en tu app, sus tiempos de lanzamiento previos al principal pueden ser bastante lentos. Carthage es capaz de ayudar a mitigar esto mediante la construcción de sus frameworks dinámicos como frameworks estáticos en su lugar. Los frameworks estáticos pueden ser enlazados directamente en su aplicación o fusionados en un framework dinámico más grande con unas simples modificaciones en su flujo de trabajo, lo que puede resultar en reducciones dramáticas en los tiempos de lanzamiento pre-main.

Carthage 0.30.0 o superior

Desde la versión 0.30.0 el proyecto Carthage despliega soporte para frameworks enlazados estáticamente escritos en Swift u Objective-C, soporte que ha sido introducido en Xcode 9.4. Sin embargo, ten en cuenta que dice específicamente frameworks, de ahí que los paquetes Darwin con extensión .framework y archivos de objetos enlazados estáticamente en su interior. Carthage no soporta actualmente esquemas de bibliotecas estáticas, ni hay planes para introducir su soporte en el futuro.

El flujo de trabajo difiere apenas:

  • Todavía necesita marcar los esquemas de su proyecto compatible con Carthage como compartidos en Producto > Esquema > Gestionar Esquemas…, al igual que con los binarios dinámicos
  • Todavía necesita enlazar contra esquemas estáticos .frameworks en las Fases de Construcción de su proyecto al igual que con los binarios dinámicos

Sin embargo:

  • En la sección Build Settings, Linking de su proyecto compatible con Carthage, establezca Mach-O Type a Static Library
  • Sus frameworks enlazados estáticamente se construirán en ./Carthage/Build/$(PLATFORM_NAME)/Static
  • No debe añadir ninguno de los frameworks estáticos como archivos de entrada/salida en la fase de construcción de carthage copy-frameworks

Carthage 0.29.0 o inferior

Vea el documento StaticFrameworks para más detalles.

Tenga en cuenta que se aplican algunas advertencias a este enfoque:

  • Los frameworks estáticos de Swift no son soportados oficialmente por Apple
  • Este es un flujo de trabajo avanzado que no está integrado en Carthage, YMMV

Declare su compatibilidad

¿Quiere anunciar que su proyecto puede ser utilizado con Carthage? Puedes añadir un distintivo de compatibilidad:

… a tu README, simplemente insertando el siguiente Markdown:

(https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)

Problemas conocidos

Problema de símbolos DWARFs

El framework preconstruido no puede ser depurado usando la ejecución de pasos en otra máquina que no sea en la que el framework fue construido. Simplemente carthage bootstrap/build/update --no-use-binaries debería arreglar esto, pero para una solución más automatizada, ver #924. Dupe rdar://23551273 si desea que Apple para arreglar la causa raíz de este problema.

CarthageKit

La mayor parte de la funcionalidad de la herramienta de línea de comandos carthage es en realidad encapsulado en un marco llamado CarthageKit.

Si estás interesado en utilizar Carthage como parte de otra herramienta, o tal vez ampliar la funcionalidad de Carthage, echa un vistazo al código fuente de CarthageKit para ver si la API se ajusta a tus necesidades.

Diferencias entre Carthage y CocoaPods

CocoaPods es un gestor de dependencias para Cocoa desde hace mucho tiempo. Entonces, ¿por qué se creó Carthage?

En primer lugar, CocoaPods (por defecto) crea y actualiza automáticamente un espacio de trabajo de Xcode para su aplicación y todas las dependencias. Carthage construye los binarios del framework usando xcodebuild, pero deja la responsabilidad de integrarlos al usuario. El enfoque de CocoaPods es más fácil de usar, mientras que el de Carthage es flexible y no intrusivo.

El objetivo de CocoaPods se enumera en su README de la siguiente manera:

… mejorar el descubrimiento de, y el compromiso con, las bibliotecas de código abierto de terceros, mediante la creación de un ecosistema más centralizado.

Por el contrario, Carthage ha sido creado como un gestor de dependencias descentralizado. No hay una lista central de proyectos, lo que reduce el trabajo de mantenimiento y evita cualquier punto central de fallo. Sin embargo, el descubrimiento de proyectos es más difícil: los usuarios deben recurrir a las páginas de tendencias de GitHub o similares.

Los proyectos de CocoaPods también deben tener lo que se conoce como un archivo podspec, que incluye metadatos sobre el proyecto y especifica cómo debe construirse. Carthage utiliza xcodebuildpara construir dependencias, en lugar de integrarlas en un único espacio de trabajo, no tiene un archivo de especificación similar, sino que sus dependencias deben incluir su propio proyecto de Xcode que describa cómo construir sus productos.

En definitiva, creamos Carthage porque queríamos la herramienta más simple posible-un gestor de dependencias que haga el trabajo sin asumir la responsabilidad de Xcode, y sin crear trabajo extra para los autores de frameworks. CocoaPods ofrece muchas características increíbles que Carthage nunca tendrá, a expensas de la complejidad adicional.

Licencia

Carthage se libera bajo la licencia MIT.

La foto del telón de fondo de la cabecera se libera bajo la licencia CC BY-NC-SA 2.0. Foto original de Richard Mortel.

Similar Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada.