tag mac how ios xcode cocoapods xcconfig

ios - mac - podfile



Usando CocoaPods con mĂșltiples proyectos (5)

Tengo un espacio de trabajo que contiene:

  • myiPhone.xcodeproj
  • sharedStuff / sharedStuff.xcodeproj

sharedStuff.xcodeproj crea una biblioteca estática que es una dependencia de myiPhone.xcodeproj (por simplicidad, suponga que cada proyecto tiene un solo objetivo).

Ahora quiero agregar una biblioteca a través de CocoaPods que debería estar disponible para ambos proyectos.

Mi archivo Pods se ve así:

workspace ''myWorkspace.xcworkspace'' platform :ios target :myiPhone do xcodeproj ''myiPhone.xcodeproj'' pod ''MBProgressHUD'', ''~> 0.6'' end target :sharedStuff do xcodeproj ''sharedStuff/sharedStuff.xcodeproj'' pod ''MBProgressHUD'', ''~> 0.6'' end

Cuando construyo me sale estos errores:

diff: /../Podfile.lock: No existe tal archivo o directorio. diff: /Manifest.lock: No existe tal error de archivo o directorio: El sandbox no está sincronizado con el Podfile.lock. Ejecute ''pod install'' o actualice su instalación de CocoaPods.

¿Alguien tiene una pista de lo que está pasando aquí?

ACTUALIZACIÓN: Por su aspecto, la variable PODS_ROOT no se establece cuando se ejecuta la fase de compilación "Check Pods Manifest.lock".


Con la sintaxis actual se ve así

use_frameworks! workspace ''myWorkspace'' project ''myiPhone'' project ''sharedStuff/sharedStuff'' target ''myiPhone'' do project ''myiPhone'' pod ''MBProgressHUD'', ''~> 0.6'' end target ''sharedStuff'' do project ''sharedStuff/sharedStuff'' pod ''MBProgressHUD'', ''~> 0.6'' end


Esta es mi estructura de carpetas

OB |podfile |Project1->Project1.xcodeproj |Project2->Project2.xcodeproj

y este es mi podfile dentro de la carpeta OB

source ''https://github.com/CocoaPods/Specs.git'' platform :ios, ''8.0'' workspace ''OB.xcworkspace'' use_frameworks! # ignore all warnings from all pods inhibit_all_warnings! project ''Project1/Project1.xcodeproj'' project ''Project2/Project2.xcodeproj'' abstract_target ''OB'' do pod ''Alamofire'', ''~> 4.0'' target ''Project1'' do project ''Project1/Project1.xcodeproj'' end target ''SchoolKids'' do project ''Project2/Project2.xcodeproj'' end end

Esto agregará Afnetworking / Alamofire a ambos proyectos. Si necesitamos un pod exclusivo para un proyecto en particular, podemos hacer esto.

target ''Project1'' do project ''Project1/Project1.xcodeproj'' pod ''Alamofire'', ''~> 4.0'' end


Gracias a la respuesta de Rahul Vyas, finalmente tuve éxito en mi proyecto. Mi proyecto es en reactivo nativo, y uso un submódulo de git como subproyecto. Así que este es mi archivo pod:

workspace ''LuminPDFApp.xcworkspace'' # Uncomment the next line to define a global platform for your project platform :ios, ''9.0'' use_frameworks! inhibit_all_warnings! project ''LuminPDFApp.xcodeproj'' project ''../submodules/react-native-filepicker/ios/RNFilePicker.xcodeproj'' abstract_target ''LuminPDFApp'' do pod ''SwiftyDropbox'' target ''LuminPDFApp'' do project ''LuminPDFApp.xcodeproj'' end target ''RNFilePicker'' do project ''../submodules/react-native-filepicker/ios/RNFilePicker.xcodeproj'' end end


Los primeros objetivos en sus proyectos de xcode tienen una fase de compilación para realizar una diferencia en dos archivos de bloqueo. Pero parece que las configuraciones de sus proyectos de xcode no hacen referencia a las configuraciones definidas por el usuario configuradas en Pods / Pods-libPods.xcconfig.

Parece que estás intentando vincular un Pod con objetivos específicos en múltiples xcodeprojs. Si mi suposición es correcta, está utilizando el atributo de target incorrectamente. El atributo de target crea una nueva biblioteca estática dentro del proyecto Pods que incluye los Pods que configuró dentro de ese target .

El destino predeterminado para los Pods xcodeproj es libPods que genera la biblioteca estática libPods.a. Esto se genera si no especifica un target . Por lo tanto, si no le importa generar múltiples bibliotecas estáticas en los Pods xcodeproj, no se moleste en definir un objetivo y use el atributo link_with para vincular el target predeterminado de libPods (biblioteca estática) con los objetivos en su xcodeprojs.

Por ejemplo, el siguiente Podfile creará un destino libPods en Pods.xcodeproj que agregará fuentes de MBProgressHUD a la fase de compilación, luego agregará el archivo xcconfig que define PODS_ROOT y PODS_HEADER_SEARCH_PATH para cada uno de sus xcodeprojs. Luego vinculará esta biblioteca estática a los objetivos que especificó con link_with y xcodeproj

workspace ''myWorkspace.xcworkspace'' platform :ios xcodeproj ''myiPhone.xcodeproj'' link_with ''myiPhone'' xcodeproj ''sharedStuff/sharedStuff.xcodeproj'' link_with ''sharedStuff'' pod ''MBProgressHUD'', ''~> 0.6''


Tengo 2 proyectos en mi área de trabajo y la respuesta aceptada no funcionó para mí. Pero, finalmente, he logrado que Cocoapods funcione correctamente con 2 proyectos. Aquí es cómo se ve mi archivo pod:

workspace ''Projects.xcworkspace'' platform :ios, ''8.0'' use_frameworks! # ignore all warnings from all pods inhibit_all_warnings! def shared_pods # all the pods go here # pod ''Parse'' etc. end xcodeproj ''Project1.xcodeproj'' xcodeproj ''Project2/Project2.xcodeproj'' target :Project1 do xcodeproj ''Project1'' shared_pods end target :Project2 do xcodeproj ''Project2/Project2.xcodeproj'' shared_pods end