La integración de las vainas con todos los objetivos

He estado usando CocoaPods para un par de semanas con mi app de iOS y funciona perfectamente con el objetivo de que he estado probando (vamos a llamar «MainApp»). Sin embargo, ahora quiero construir un destino diferente («MyAppLite») y se dio cuenta que la build failed (archivo no encontrado en una de las vainas archivos de encabezado).

Las diferencias en la Configuración de Compilación que he notado son como sigue:

  • Otros Enlazador no contiene los marcos necesarios en MyAppLite
  • Marco/Encabezado/Biblioteca de Rutas de Búsqueda están vacías en MyAppLite
  • Ninguno de los Definidos por el Usuario Configuración de generación en MainApp están presentes en MyAppLite

¿Cómo puedo garantizar que cuando ejecuto pod install, todos los objetivos tienen las bibliotecas vinculadas?

De referencia, aquí está mi Podfile:

platform :ios, '5.0'

pod 'TTTAttributedLabel', '~> 1.7.0'
pod 'iRate', '~> 1.7.5'
pod 'MBProgressHUD', '~> 0.6'
pod 'FlurrySDK', '~> 4.2.3'
pod 'ACSimpleKeychain', '~> 0.0.1'
pod 'WEPopover', '~> 0.0.1'
pod 'AFNetworking', '~> 1.3.1'
pod 'Nimbus', '~> 1.0.0'
pod 'QuincyKit', '~> 2.1.9'
InformationsquelleAutor colincameron | 2013-08-29

4 Kommentare

  1. 35

    Para CocoaPods 1.0.0, la recomendación de los desarrolladores es el uso de abstract_target (pero no es compatible con 0.39.0):

    platform :ios, '5.0'
    
    abstract_target 'defaults' do
        pod 'TTTAttributedLabel', '~> 1.7.0'
        pod 'iRate', '~> 1.7.5'
        pod 'MBProgressHUD', '~> 0.6'
        pod 'FlurrySDK', '~> 4.2.3'
        pod 'ACSimpleKeychain', '~> 0.0.1'
        pod 'WEPopover', '~> 0.0.1'
        pod 'AFNetworking', '~> 1.3.1'
        pod 'Nimbus', '~> 1.0.0'
        pod 'QuincyKit', '~> 2.1.9'
    
        target 'MyApp'
        target 'MyAppLite'
    end

    Para CocoaPods 0.39.0 + 1.0.0, la compatibilidad de uso de def funciona bien (pero no es lo recomendado por los desarrolladores):

    platform :ios, '5.0'
    
    def default_pods
        pod 'TTTAttributedLabel', '~> 1.7.0'
        pod 'iRate', '~> 1.7.5'
        pod 'MBProgressHUD', '~> 0.6'
        pod 'FlurrySDK', '~> 4.2.3'
        pod 'ACSimpleKeychain', '~> 0.0.1'
        pod 'WEPopover', '~> 0.0.1'
        pod 'AFNetworking', '~> 1.3.1'
        pod 'Nimbus', '~> 1.0.0'
        pod 'QuincyKit', '~> 2.1.9'
    end
    
    target 'MyApp' do
        default_pods
    end
    
    target 'MyAppLite' do
        default_pods
    end
  2. 16

    Con CocoaPods 1.x

    Puede utilizar el target bloques

    platform :ios, '13.0'
    
    
    def default_pods
        pod 'TTTAttributedLabel', '~> 1.7.0'
        pod 'iRate', '~> 1.7.5'
        pod 'MBProgressHUD', '~> 0.6'
        pod 'FlurrySDK', '~> 4.2.3'
        pod 'ACSimpleKeychain', '~> 0.0.1'
        pod 'WEPopover', '~> 0.0.1'
        pod 'AFNetworking', '~> 1.3.1'
        pod 'Nimbus', '~> 1.0.0'
        pod 'QuincyKit', '~> 2.1.9'
    end
    
    target 'MyApp' do
      default_pods
    end
    
    target 'MyAppLite' do
      default_pods
    end

    Relevantes documentación

    • Esto es esencialmente lo que hice, pero tuve que definir un objetivo explícito que contiene todas las vainas, seguido por la línea de link_with ['MyApp', 'MyAppLite'] antes de la lista de las vainas.
    • Puedo preguntarle por qué había de hacerlo?
    • Sí, probablemente una relación de error de escritura o algo. Funciona muy bien ahora.
    • nota: con la versión 1.2.0, este ya no funciona. [!] No válido Podfile archivo: [!] La especificación de link_with en el Podfile ahora no compatible, por favor, utilice destino de los bloques en su lugar..
    • Este respuesta funciona para mí
  3. 4

    Si tiene un gran número de objetivos y que no se desea agregar nuevo objetivo cada vez, usted puede utilizar este

    def common_pods
    
       pod 'TTTAttributedLabel', '~> 1.7.0'
       pod 'iRate', '~> 1.7.5'
       pod 'MBProgressHUD', '~> 0.6'
       pod 'FlurrySDK', '~> 4.2.3'
       pod 'ACSimpleKeychain', '~> 0.0.1'
       pod 'WEPopover', '~> 0.0.1'
       pod 'AFNetworking', '~> 1.3.1'
       pod 'Nimbus', '~> 1.0.0'
       pod 'QuincyKit', '~> 2.1.9'
    
    end
    
    project = Xcodeproj::Project.open “./<projectNameHere>.xcodeproj"
    
    project.targets.each do |t|
    
    target t.name do
    
        common_pods
    
    end
  4. 3

    De la documentación:

    Si no hay un objetivo explícito es especificado, entonces las Vainas de destino estará relacionado con el primer objetivo en el proyecto.

    Puede utilizar link_with para enlazar con nuevos objetivos.

    Ver también Múltiples Objetivos en el Cocoapods documentación si usted necesita diferentes dependencia de configuraciones para diferentes objetivos

    • Construir los Ajustes se configuran automáticamente con pod install – no quiero iniciar manualmente a jugar con las cosas que deben ser correctamente generado automáticamente – ¿ese no es el punto entero de CocoaPods?
    • También, quiero establecer exactamente las mismas dependencias para todos los objetivos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea