No se puede usar el "Marco de venta" CocoaPod Inside Workspace Playground

He creado un proyecto de ejemplo que ilustra mi problema aquí .

En resumen, estoy tratando de usar un "framework vendado" CocoaPod dentro de un área de juegos. Creo que esto es posible, pero requiere un poco de manipulación con la configuration del proyecto, y no puedo entender qué cambiar.

Para observar el problema en el proyecto de ejemplo , haga lo siguiente:

  • Abra CocoaPods-Test/CocoaPods-Test.xcworkspace en Xcode.
  • Los pods deben instalarse y confirmarse en el repository, pero pueden ejecutar la pod install si es necesario.
  • Tenga en count que el objective CocoaPods-Test y se ejecuta con éxito, importando las vainas PromiseKit y TwilioChatClient .
  • Navega a Playground.playground dentro del espacio de trabajo.
  • Tenga en count que el patio de juegos se ejecuta bien al importar PromiseKit pero si se importa TwilioChatClient , la ejecución del patio falla con "no tal module 'TwilioChatClient'".

Después de leer los siguientes resources:

  • https://github.com/CocoaPods/CocoaPods/issues/5334
  • https://github.com/CocoaPods/CocoaPods/issues/5215
  • https://github.com/CocoaPods/CocoaPods/issues/5563
  • https://github.com/CocoaPods/swift/issues/3
  • https://github.com/CocoaPods/CocoaPods/issues/4135
  • https://github.com/CocoaPods/CocoaPods/issues/2240
  • https://github.com/CocoaPods/CocoaPods/issues/6669#issuecomment-300188519
  • https://guides.cocoapods.org/using/troubleshooting.html
  • https://www.objc.io/issues/6-build-tools/cocoapods-under-the-hood/

Creo que el problema probablemente esté relacionado con el hecho de que TwilioChatClient es un "marco de ventas" (vea su podspec ), lo que significa que no se ha creado un destino de pod. Después de leer los resources anteriores, siento que una solución está al scope, pero no puedo entenderlo.

Si bien el proyecto de muestra aquí ilustra lo que creo que es el problema subyacente, el problema que me impulsó a crear este proyecto de ejemplo es un poco más complicado.

En mi proyecto, creo un objective de marco que contiene todo el código de mi aplicación (para que pueda importarse a mi aplicación y también a mis parques infantiles utilizando resources de la aplicación). Este marco tiene dependencies de pod, como PromiseKit y TwilioChatClient . El error de ejecución en el patio de recreo es diferente ("No se pudieron search símbolos" en lugar de "no existe dicho module"), ya que no estoy importando el module CocoaPods directamente sino mi marco que utiliza el marco de pod.

Sospecho que si puedo resolver el problema de "no hay tal module", me ayudará a resolver mi problema de "no podría search símbolos".

Finalmente, esta parece ser una buena oportunidad para hacer una contribución de código abierto que otros no parecen querer hacer (ver discusión aquí ). Tangencialmente, me encantaría contribuir, pero no siento que entiendo qué es exactamente lo que está sucediendo con CocoaPods, el process de construcción de Xcode, etc., después de leer un poco sobre esto (por ejemplo, aquí y aquí ). Cualquier reference para ayudar a comprender el process de compilation de Xcode y lo que está haciendo CocoaPods bajo el capó son apreciados. Parece que los resources que he encontrado son "una visión general de muy alto nivel" (que obtengo), o "cavando a través del código fuente", sin mucho entremedio.

Si debe tener este trabajo, se me ocurrió una solución al crear un objective marco dentro del proyecto Pods, que se denomina el marco del proveedor, y utiliza todos sus encabezados de forma pública, utilizando el marco como una única dependencia. He bifurcado tu ejemplo de GH y lo he vinculado aquí . introduzca la descripción de la imagen aquí introduzca la descripción de la imagen aquí

No es la solución más elegante, pero te ayudará en un apuro.

ACTUALIZACIÓN Primero construya el marco "falso", luego desarrolle el objective de la aplicación y luego vaya al área de juegos.