Error de validación: paquete inválido. El paquete en … contiene el archivo no permitido ‘Frameworks’

Estoy intentando enviar una aplicación con el Xcode6 GM, y recibo este error en la validación. La aplicación tiene una extensión de acción y un marco dynamic que se comparte entre la extensión y la aplicación en sí.

No tengo un archivo llamado ‘Frameworks’ en ninguna parte del proyecto, así que no estoy seguro de qué se supone que significa esto. ¿Alguien ha tenido este problema o tiene alguna idea? Así es como se ve el error

Resulta que el error está relacionado con el uso de Swift (tanto la aplicación como la extensión hacen uso de Swift).

Para la aplicación, tuve que configurar:

Embedded Content Contains Swift Code: YES 

y para la extensión:

 Embedded Content Contains Swift Code: NO 

Xcode 8 y 9

Parece que esto ha cambiado de nombre a las Always Embed Swift Standard Libraries en Xcode 8 y 9. Entonces, para la aplicación:

 Always Embed Swift Standard Libraries: YES 

y para la extensión:

 Always Embed Swift Standard Libraries: NO 

La única solución que funcionó para mí fue agregar este script de ejecución al objective de extensión de la aplicación:

 cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" if [[ -d "Frameworks" ]]; then rm -fr Frameworks fi 

enter image description here Fuente: https://github.com/CocoaPods/CocoaPods/issues/4203

Entonces 3 pasos para arreglar esto desde la configuración de construcción

  1. Aplicación de contenedor: Embedded Content Contains Swift Code: YES
  2. Extensión: Embedded Content Contains Swift Code: NO
  3. Extensión: ruta de búsqueda @executable_path/../../Frameworks = @executable_path/../../Frameworks

En mi caso, acabo de actualizar a CocoaPods 1.0.1 y parece ser un nuevo error.

La actualización de Pod agrega un script de ejecución al objective de mi Extensión que crea la carpeta de Frameworks. Lo encontré porque estaba a punto de agregar el script de ejecución de @ Roman para eliminarlo.

La solución fue eliminar esta secuencia de comandos de la fase de comstackción de mi extensión. Aquí está el que tenía que ir …

enter image description here

Elimine cada fase de comstackción para su extensión que tiene embed palabra en su título.

Adicionalmente:

  • El contenido incrustado contiene el código Swift debe establecerse en Yes para el objective de la extensión.

Ninguna de las respuestas anteriores funcionó para mí. Esto se debió a que el error no fue causado por la aplicación principal o su extensión. En cambio, una de las bibliotecas vinculadas tuvo la culpa.

Para confirmar, primero archive usando Xcode y luego usando Organizer, seleccione la entrada y ubíquela usando Mostrar en Finder. Esto mostrará el archivo .xcarchive .

Seleccione ese archivo y elija “Mostrar contenido del paquete”.

Seleccione el .app en la carpeta Productos / Aplicaciones y seleccione nuevamente “Mostrar contenido del paquete”.

Ubique el módulo ofensivo en la carpeta de Frameworks. Por ejemplo, si el error es:

 ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'." 

Luego, en Frameworks/MyLib.framework , probablemente sea visible lo siguiente:

 ../Frameworks/libswiftContacts.dylib ../Frameworks/libswiftCore.dylib ../Frameworks/libswiftCoreData.dylib ../Frameworks/libswiftCoreGraphics.dylib ../Frameworks/libswiftCoreImage.dylib ../Frameworks/libswiftCoreLocation.dylib ../Frameworks/libswiftDarwin.dylib ../Frameworks/libswiftDispatch.dylib ../Frameworks/libswiftFoundation.dylib ../Frameworks/libswiftLocalAuthentication.dylib ../Frameworks/libswiftObjectiveC.dylib ../Frameworks/libswiftPassKit.dylib ../Frameworks/libswiftUIKit.dylib ../Frameworks/libswiftWebKit.dylib 

Estos están presentes porque la biblioteca vinculada (o módulo) que la aplicación principal incluye tiene EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

Ubique el módulo dependiente en Xcode y actualice la bandera:

enter image description here

Tenga en cuenta que al haber superado este problema, la aplicación aún puede ser rechazada con un correo electrónico explicativo de iTunes Store:

 Invalid Swift Support - The Watch OS application has Swift libraries at both... 

De nuevo, esto vuelve al indicador EMBEDDED_CONTENT_CONTAINS_SWIFT . Asegúrese de que solo la aplicación principal tenga esto configurado en YES . Tanto la aplicación WatchKit como la extensión deben tener esta bandera configurada en NO . Esto es como se detalla en la respuesta de @ Mike arriba.

En mi caso, había una biblioteca de CocoaPod “Blockly” que especificaba Sí para “Always Embed Swift Standard Libraries”. Después de hacer NO para la opción, funcionó. enter image description here

En mi caso, la solución fue eliminar mi marco de trabajo de los Binarios incrustados de mi extensión y agregarlo a los marcos y bibliotecas vinculados de mi extensión. (Ambos se pueden encontrar en la pestaña General de la extensión).

Si Embed Pods Frameworks script y Roman’s script existen en el mismo destino.

Compruebe si Embed Pods Frameworks se encuentra antes que el otro. Si no, solo mueva el guión de Roman hasta el final.

No pude encontrar ninguna configuración para Embedded Content Contains Swift Code pero pude encontrar una configuración Always Embed Swift Standard Libraries y establecer esto en NO para mi marco solucionó este problema.

  1. Aplicación de contenedor: Configuración de comstackción -> Contenido incrustado contiene código Swift:
  2. Extensión: Configuración de comstackción -> Contenido incrustado contiene código Swift: NO
  3. Extensión: Fase de comstackción -> se agregó la siguiente secuencia de comandos de ejecución en

cd “$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /” if [[-d “Frameworks”]]; luego rm -fr Frameworks fi

  1. (importante) Extensión: Fase de comstackción -> mover la secuencia de comandos de ejecución a la última (después del guión Embed Pods Frameworks)

Tuve este problema la primera vez con XCode 7.1.1 para mi aplicación que tiene una extensión de hoy (no hay Swift en mi proyecto). El script ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) no funcionó para mí.

La degradación de los cocoapods a la versión 0.39.0.beta.3, la pod install ejecución y luego el archivado resolvió el problema.

Si está utilizando CocoaPods, consideraría eliminar la fase de comstackción de los marcos incrustados en el objective problemático (la extensión), esto me solucionó el problema.