update react pods guide actualizar ios cocoapods podfile xcode-project

ios - react - Integrando vainas con todos los objetivos.



ruby cocoapods (4)

He estado usando CocoaPods por algunas semanas con mi aplicación iOS y funciona perfectamente con el objetivo que he estado probando (llamémoslo "MainApp"). Sin embargo, ahora quiero construir un objetivo diferente ("MyAppLite") y noté que la compilación falló (el archivo no se encuentra en uno de los archivos de encabezado de los pods).

Las diferencias en la configuración de compilación que he notado son las siguientes:

  • Otros indicadores de vinculador no contienen los marcos necesarios en MyAppLite
  • Las rutas de búsqueda de Framework / Header / Library están vacías en MyAppLite
  • Ninguna de las configuraciones de construcción definidas por el usuario en MainApp están presentes en MyAppLite

¿Cómo puedo asegurarme de que cuando ejecuto la pod install , todos los destinos tienen las bibliotecas vinculadas?

Para 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''


Con CocoaPods 0.x

Puedes usar la directiva link_with

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'' link_with "MyApp" link_with "MyAppLite"

Esto producirá libPods.a y lo vinculará a Target1 y Target1 .

documentation relevante:

  • Tenga en cuenta que cocoapods vincula automáticamente cada objetivo en el archivo pod con su proyecto. Por esta razón, los nombres de los objetivos deben coincidir. Si por alguna razón desea especificar un objetivo en su archivo pod con un nombre diferente, puede establecer el atributo link_with :

    target :test, :exclusive => true do link_with ''MyAppTests'' end

  • Los objetivos, por defecto, son exclusivos si su padre tiene una plataforma diferente.

  • El objetivo principal del archivo Pod, siempre está vinculado con el primer objetivo del Proyecto final.

Con CocoaPods 1.x

La especificación de link_with en el archivo Pod ahora no es compatible.

Ver otras respuestas.


De los documentos:

Si no se especifica un objetivo explícito, el objetivo Pods se vinculará con el primer objetivo en su proyecto.

Puedes usar link_with para enlazar con otros objetivos.

También vea Múltiples objetivos en la documentación de Cocoapods si necesita diferentes configuraciones de dependencia para diferentes objetivos


Para CocoaPods 1.0.0, la recomendación de los desarrolladores es usar 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 la compatibilidad con CocoaPods 0.39.0 + 1.0.0, usar def funciona bien (pero no está 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


Si tiene un gran número de objetivos y no desea agregar nuevos objetivos cada vez, puede usar 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