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