ios - guide - podfile
Cómo usar CocoaPods con múltiples subproyectos de Framework (1)
Antes que nada, ¡he activado use_framework! en Podfile.
Suponga que el proyecto principal es MAIN_APP, y dos subproyectos son FRAMEWORK_A y FRAMEWORK_B.
MAIN_APP requiere FRAMEWORK_A y FRAMEWORK_B, y FRAMEWORK_B también requiere FRAMEWORK_A.
Todos los proyectos / objetivos están utilizando CocoaPods para administrar bibliotecas de terceros.
Por ahora, mi Podfile se ve así:
target :MAIN_APP do
project ''MAIN_APP''
pod ''PodA''
end
target :FRAMEWORK_A do
project ''FRAMEWORK_A''
pod ''PodB''
end
target :FRAMEWORK_B do
project ''FRAMEWORK_B''
pod ''PodC''
end
Agregué manualmente FRAMEWORK_A para construir las configuraciones de FRAMEWORK_B, y ambos FRAMEWORK_A y FRAMEWORK_B para construir las configuraciones de MAIN_APP.
Todo el código se compila bien, pero cuando se ejecuta MAIN_APP se bloquea porque no puede cargar Framework of PodB.
Sé que también puedo agregar manualmente PodB a MAIN_APP y FRAMEWORK_B, pero ¿es posible definir este tipo de dependencia de destino en Podfile?
Por cierto, cuando la pod install
, recibí la advertencia:
[!] El archivo Podfile contiene objetivos marco, para los cuales el archivo Podfile no contiene objetivos host (objetivos que incrustan el marco).
Si este proyecto es para hacer el desarrollo del marco, puede ignorar este mensaje. De lo contrario, agregue un objetivo al Podfile que incruste estos marcos para que este mensaje desaparezca (por ejemplo, un objetivo de prueba).
Como sé, puedo usar un objetivo anidado para objetivos de host como:
target :FRAMEWORK_A
target :MAIN_APP
end
end
Así que CocoaPods configurará MAIN_APP para usar FRAMEWORK_A y heredará dependencias de pod de FRAMEWORK_A. Pero parece que no puedo hacerlo con múltiples dependencias como:
target :FRAMEWORK_A
target :MAIN_APP
end
end
target :FRAMEWORK_B
target :MAIN_APP
end
end
Debido a que el objetivo: MAIN_APP no se puede declarar dos veces.
¿Hay alguna solución mejor en lugar de definir dependencias de pod como una función en Podfile e incluir en todos los objetivos?
Esta es una gran pregunta y he tenido problemas con una situación similar. Este es mi archivo PodFile:
platform :ios, ''8.0''
workspace ''mygreatapp.xcworkspace''
project ''app/MyGreatApp/MyGreatApp.xcodeproj''
project ''platform/MyGreatFramework/MyGreatFramework.xcodeproj''
abstract_target ''This can say whatever you want'' do
target ''MyGreatApp'' do
project ''app/MyGreatApp/MyGreatApp.xcodeproj''
pod ''AFNetworking'', ''~> 2.6.0''
pod ''PromiseKit'', ''~> 1.5''
pod ''PromiseKit/Join''
pod ''KVOController'', ''~> 1.0''
pod ''FLAnimatedImage'', ''~> 1.0''
pod ''Crashlytics'', ''~> 3.3''
pod ''SSZipArchive''
end
target ''MyGreatAppTests'' do
project ''app/MyGreatApp/MyGreatApp.xcodeproj''
pod ''OCMock'', ''~> 3.1''
end
target ''MyGreatFramework'' do
project ''platform/MyGreatFramework/MyGreatFramework.xcodeproj''
pod ''SSZipArchive''
end
target ''MyGreatFrameworkTests'' do
project ''platform/MyGreatFramework/MyGreatFramework.xcodeproj''
pod ''OCMock'', ''~> 3.1''
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings[''ENABLE_BITCODE''] = ''NO''
end
end
end
end
Como puede ver, no estoy usando frameworks y utilizo un abstract_target
para agruparlo todo. Desearía que este tipo de dependencias fuera más fácil de hacer en CocoaPods. Sé que esto realmente no responde a su pregunta, pero podría ser útil, no obstante.