ios - toolbar ionic color
Error de validación: paquete no válido. El paquete en... contiene el archivo no permitido ''Frameworks'' (17)
Estoy tratando de 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 dinámico que se comparte entre la extensión y la aplicación misma.
No tengo un archivo llamado ''Frameworks'' en ninguna parte del proyecto, por lo que realmente no estoy seguro de lo que se supone que significa. ¿Alguien ha tenido este problema o tiene alguna idea?
- Aplicación de contenedor: Configuración de compilación -> El contenido incrustado contiene un código rápido: SÍ
- Extensión: Configuración de compilación -> El contenido incrustado contiene un código rápido: NO
- Extensión: Fase de compilación -> agregó el siguiente script de ejecución en
cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; entonces rm -fr Frameworks fi
- (importante) Extensión: Fase de construcción -> mover el script de ejecución al último (después del script de incrustar marcos de pods)
Elimine cada
fase de compilación
de su extensión que tenga palabra
embed
en su título.
Adicionalmente:
-
El contenido incrustado contiene código Swift
debe establecerse en
Yes
para el objetivo de extensión.
En mi caso, acabo de actualizar a CocoaPods 1.0.1 y esto parece ser un nuevo error.
La actualización de Pod agrega un script de ejecución al objetivo de mi Extensión que crea la carpeta Frameworks. Lo encontré cuando estaba a punto de agregar el script de ejecución de @ Roman para eliminarlo.
La solución fue eliminar este script de la fase de compilación de mi extensión. Aquí está el que tenía que ir ...
En mi caso, la solución fue eliminar mi marco de trabajo de los binarios integrados de mi extensión y agregarlo a las bibliotecas y los marcos vinculados de mi extensión. (Ambos se pueden encontrar en la pestaña General de la extensión).
Encontré muchas preguntas como esta y ninguna me ayudó a solucionar mi problema, así que espero que esto pueda ayudar a alguien.
Estoy creando una aplicación que tiene una extensión Intent (para los accesos directos de Siri) y estoy usando un marco para el código compartido entre la extensión y mi aplicación, según lo recomendado por Apple.
Había agregado mi marco a mi extensión en la sección "Marcos y bibliotecas" de la configuración "General" para el destino. Cuando agrega un marco aquí, hay dos columnas. Uno dice el nombre del marco y el otro se titula "Incrustar". No aparecía nada en la columna "Insertar", así que pensé que estaba bien, pero tuve que elegir explícitamente una opción "No insertar" para esa columna para mi marco. Cuando hice eso y lo archivé en Xcode, pude ver durante la validación que el marco ya no figuraba en mi contenido de ipa debajo de cada objetivo, sino solo una vez, y la validación tuvo éxito finalmente.
Entonces, 3 pasos para arreglar esto desde la configuración de compilación
-
Aplicación de contenedor: el
Embedded Content Contains Swift Code: YES
-
Extensión:
Embedded Content Contains Swift Code: NO
-
Extensión: Ruta de búsqueda de
@executable_path/../../Frameworks
=@executable_path/../../Frameworks
Estaba recibiendo el mismo error, y es porque estaba copiando el marco en el paquete de extensión. Como resultado, los marcos que utiliza la extensión deben copiarse en el paquete de la aplicación principal y solo vincularse en la configuración de compilación de la extensión (no copiada). Asegúrese de tener la ruta de búsqueda ''@executable_path /../../ Frameworks'' en la compilación de la extensión. Creo que esa ruta fue agregada automáticamente por XCode 10.
Estaba recibiendo este mismo error, junto con un
Error de paquetes anidados no permitidos
Mi problema fue específicamente con
SquareReaderSDK.framework
pero tuve que agregar un nuevo script de ejecución según sus instrucciones:
FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"
La única solución que funcionó para mí fue agregar este script de ejecución al objetivo de la extensión de la aplicación:
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
Ninguna de las configuraciones de compilación enumeradas aquí resolvió este problema por mí. Sin embargo, conseguí que esto funcione después de mover algunos marcos de "Binarios incrustados" a "Marcos y bibliotecas vinculadas".
Parece que mi aplicación principal y uno de mis marcos personalizados tenían la misma dependencia de marco en ambos y eso parece ser un No No, pero moverlo en mi aplicación principal desde el área Incrustada al área Vinculada me permitió cargar la aplicación con éxito con sin errores.
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. Más bien, una de las bibliotecas vinculadas tenía la culpa.
Para confirmar, primero archiva con Xcode y luego con Organizer, selecciona la entrada y localiza usando Show in Finder.
Esto mostrará el archivo
.xcarchive
.
Seleccione ese archivo y elija "Mostrar contenido del paquete".
Seleccione el .app en la carpeta Productos / Aplicaciones y vuelva a elegir "Mostrar contenido del paquete".
Localice el módulo infractor en la carpeta 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
lo siguiente probablemente será visible:
../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 el
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Localice el módulo dependiente en Xcode y actualice la bandera:
Tenga en cuenta que una vez superado este problema, la aplicación aún puede ser rechazada con un correo electrónico explicativo de la tienda iTunes Store:
Invalid Swift Support - The Watch OS application has Swift libraries at both...
Nuevamente, esto vuelve al indicador
EMBEDDED_CONTENT_CONTAINS_SWIFT
.
Asegúrese de que solo la aplicación principal tenga este valor establecido en
YES
.
Tanto la aplicación como la extensión WatchKit deben tener este indicador establecido en
NO
.
Esto es como se detalla en la respuesta de @ Mike arriba.
No pude encontrar ninguna configuración para el
Embedded Content Contains Swift Code
pero pude encontrar una configuración de
Always Embed Swift Standard Libraries
y establecer esto en NO para mi marco solucionó este problema.
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
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
Si el script Embed Pods Frameworks y el script de Roman existen en el mismo objetivo.
Verifique si el marco de incrustación de pods se ubica antes que el otro. Si no, simplemente mueva el guión de Roman al último.
Si está utilizando CocoaPods, consideraría eliminar la fase de compilación de marcos de incrustación en el objetivo problemático (la extensión), esto solucionó el problema para mí.
Tuve este problema la primera vez con XCode 7.1.1 para mi aplicación que tiene una extensión Today (no hay Swift en mi proyecto). El script ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) no funcionó para mí.
Al degradar cocoapods a la versión 0.39.0.beta.3, ejecutar la
pod install
y luego volver a archivarlo resolvió el problema.