No se puede generar el archivo de la aplicación iOS en xcode

Tengo un problema al generar un archivo de aplicación de iOS desde una aplicación. La aplicación comstack muy bien e incluso funciona en el simulador. Ahora quería hacer algunas pruebas ad hoc y no puedo generar el archivo de aplicaciones de iOS. Cuando hago clic en el Producto -> Archivar, se genera un archivo xcode genérico. Alguien puede ayudarme. Debo mencionar que ya he generado un archivo de aplicaciones de iOS de esta aplicación. Acaba de parar para generar iOS Archive por alguna razón. Muchas gracias.

Verificar configuración de comstackción:

  1. Omitir la instalación es NO para el objective principal del proyecto
  2. Omitir la instalación es SÍ para los objectives del marco (subproyectos)
  3. En Build Fhases para subproyectos, Copy Headers debe estar en Project, no Public (no se aplica si se está creando una biblioteca estática)
  4. El directorio de instalación en Despliegue es válido (/ Aplicaciones, por ejemplo)

Esto puede suceder si ha agregado un marco de trabajo / biblioteca … necesita editar el objective-> Configuraciones de comstackción de esa biblioteca y establecer la configuración ‘Omitir instalación’ a ‘Sí’. Cuando vuelva a archivar, XCode debería comenzar a producir un ‘Archivo de aplicación de iOS’ de nuevo en lugar de un ‘archivo de xcode genérico’.

Además de Omitir instalación a y, en caso de que haya abierto otro proyecto de lib / framwork dentro de su proyecto de aplicación, debe mover encabezados (si corresponde) de público a proyecto en la Fase de comstackción / Copiar encabezados .

fase de compilación de su objetivo lib / framwork

Hice lo siguiente para que funcione para mí:

  1. Tenía una biblioteca estática de tres20, utilicé cocoapods para incluir los archivos dentro del proyecto principal
  2. siguió la instalación de omisión para todos los otros sub proyectos / bibliotecas estáticas y cambió los encabezados de copia de público a proyecto como se indicó anteriormente
  3. lo más importante: en cada biblioteca que usa su proyecto vaya a las fases de comstackción -> Copiar archivos y se aseguró de que el destino se cambie de la Absolute path al products directory . Nota: vea la sugerencia a continuación para restringir su búsqueda y encontrar la biblioteca que causa este error.

¡y eso fue todo!

sugerencia: para tener una idea de los archivos ofensivos que están causando que su archivo archive un archivo de almacenamiento en lugar de un ipa haga esto:

  1. Seleccione el archivo y haga clic en el botón Distribuir.
  2. Seleccione la opción ‘Guardar productos fabricados’.
  3. Presione Siguiente y Guardar.
  4. Explore el directorio creado en Finder.
  5. El subdirectorio ‘libraries’ identificará las bibliotecas que necesita para configurar Skip Install en Yes.
  6. en algunos casos, usr/local/include identificará los archivos de encabezado culpable que necesita para pasar de Public a Project o los archivos que debe cambiar de la ruta absoluta al directorio de productos (o incluso los archivos que olvidó configurar para omitir la instalación en sí bandera). pero ese directorio (es decir, usr / local / include) varía según la estructura de directorios de su sublibrary. En muchos casos … verá todos los archivos enumerados en Copiar archivos en el paso 3 que se detalla aquí. Si los encuentras aquí, entonces tienes una respuesta definitiva para la causa de tu problema.

actualizar para insinuar: para hacer la vida aún más simple … cualquier archivo que aparezca bajo el paso 4 en la sugerencia anterior … simplemente búscalo en la búsqueda global de xcode … y deberás obtener resultados inmediatos para lo que quieras … por ejemplo, este era el contenido de mi carpeta (siguiendo los pasos en la sugerencia anterior):

enter image description here

Así que podría decir que tiene algo que ver con las bibliotecas crypto y ssl … buscándolas:

enter image description here

me hizo darme cuenta de que olvidé establecer la instalación de omisión en sí.

Si exporta el archivo, ábralo y vea /urs/local/include en Products intente esta sugerencia :

En cada pod, en Packaging , Private Headers Folder Path y Public Headers Folder Path se establece en /usr/local/include . Si los borro, obtengo un archivo válido.

enter image description here

Funcionó para mí después de actualizar mi aplicación React Native a 0.11.0 , Xcode 7 y CocoaPods 0.39.0.beta.4 .

Si está utilizando CocoaPods, WatchKit o Today Extension, hay un problema abierto en el repository de CocoaPods que explica cuál podría ser su problema.

La solución para mí fue eliminar la fase de Copy Pod Resources de los límites de WatchKit Extension y Today Extension en Build Phases . El proyecto comstackdo y archivado como se esperaba una vez que hice esto.

Espero que esto ayude a alguien, ¡esto me ha dejado perplejo durante todo un día!

Si alguna de las respuestas anteriores no funciona, su problema probablemente sea con cocoaPods . La última actualización 0.38.1 me 0.38.1 , pero luego 0.37.1 a 0.37.1 y las cosas volvieron a la normalidad. Usando Xcode 6.3.1

Edición posterior: la actualización a 0.38.2 también solucionará esto. Más información sobre qué causó este problema aquí: Cocoapods 0.38.1 no pudo crear un Archivo válido

A pesar de que estoy usando Xcode5 y de haberlo solucionado, estaba editando el Esquema de comstackción: probar todas las sugerencias anteriores que eran aplicables no me ayudó en mi caso.

Tenía dos objectives, por ejemplo, “Aplicación” y “Aplicación GRATUITA”. Mis problemas con el archivo genérico ocurrieron cuando intenté archivar la versión GRATUITA, que agregué después de la versión ‘normal’ de la aplicación. En mi caso, cuando seleccioné su Scheme en la barra de herramientas y elegí Edit Scheme … Vi que la sección Build tenía dos objectives, a saber, App y App FREE.

Desmarqué todas las columnas de la aplicación, dejando solo las columnas de la aplicación FREE marcadas, y hice clic en Aceptar. La próxima vez que elegí Producto> Archivo obtuve mi aplicación GRATIS en lugar de un Archivo genérico. 🙂

Si solo tiene un proyecto único, tal vez esta solución sea útil. Este problema había ocurrido cuando duplicaba el objective. Como resultado, tenía dos objectives construidos en paralelo. Esto estaba causando el problema. Se creó el archivo genérico IOS.

Para desactivar el paralelo creado vaya a

  • Administrar esquemas,
  • Editar esquema
  • Construir,
  • Eliminar el otro objective.

Tuve este problema después de actualizar a iOS 9 y Xcode 7. La solución de Josh H funcionó para mí:

En cada pod, en Empaquetado, la ruta de la carpeta de encabezados privados y la ruta de la carpeta de encabezados públicos se establece en / usr / local / include. Si los borro, obtengo un archivo válido.

¡También hice un script de post instalación para mi Podfile para hacer esto automáticamente!

  post_install do |installer_representation| installer_representation.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""]; config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""]; end end end 

Solo agrégalo a la parte inferior de tu Podfile y ejecuta la pod install

Tengo múltiples proyectos en mi espacio de trabajo (GTL, Pods y mi proyecto principal) y esto es lo que funcionó para mí:

Seleccione el proyecto, habrá 2 tipos allí, allí está el proyecto y allí están los objectives .

Para proyectos que no son su principal como GTL o PODS :

Proyectos:

 Skip Install = NO Installation Directory = /Applications // For pods Private Headers Folder Path = "" Public Headers Folder Path = "" 

Objetivos:

 Skip Install = YES Installation Directory = /Applications // For pods Private Headers Folder Path = "" Public Headers Folder Path = "" 

Para el proyecto principal (que generalmente recibe el mismo nombre que el nombre de su producto):

Proyectos:

 Skip Install = NO Installation Directory = /Applications 

Objetivos:

 Skip Install = NO Installation Directory = /Applications 

Verifique el objective de despliegue de ios en cada proyecto y objective para asegurarse de que todos sean iguales.

Tuve este problema En mi caso, fue causado por mantener un objective de la aplicación Mac como una dependencia de la aplicación de iOS.

La razón por la que se configuró de esta manera fue que la aplicación Mac era una herramienta utilizada para generar algunos datos para la aplicación iOS, que luego se incluyó en el paquete.

Tuve que eliminar esa dependencia y construir la herramienta por separado antes de hacer una comstackción de la aplicación de iOS.

En mi caso, recibía el “Archivo Genérico” erróneo solo después de comenzar a incluir el código Swift en mi proyecto predominantemente Objective-C. Después de una gran cantidad de solución de problemas y el examen del archivo que Xcode escupía, noté que la carpeta SwiftSupport (con los archivos DLL requeridos para el tiempo de ejecución Swift) estaba en un lugar diferente en mi archivo que desde una nueva y flamante aplicación de proyecto Swift archivo.

Encontré la configuración de comstackción del Installation Directory instalación y noté que estaba configurada en una ruta personalizada en mi proyecto. Simplemente lo eliminé (configurándolo en su valor genérico de /Applications ) y el siguiente Build -> Archive funcionó como se esperaba y me proporcionó un archivo de aplicación de iOS adecuado.

TL; DR: asegúrese de que la configuración de comstackción de su Installation Directory instalación esté configurada en su valor predeterminado de /Applications al incluir el código Swift en su aplicación, especialmente si está comenzando con un archivo de proyecto anterior que puede tener algunas configuraciones heredadas de comstackción.

Además de la respuesta de Alex L.

Punto 3. Cambie ‘Configuraciones de comstackción’ -> ‘Ruta de carpeta de encabezado público’ a ‘incluir / xxx’ también funciona.

Dejando esto aquí para salvar a otros del mismo viaje.

Descubrí que necesitaba eliminar la misma fase de comstackción Copy Pod Resources desde un objective de biblioteca estática en mi espacio de trabajo.

  1. Ve a Configuración de comstackción y agrega

    yourAppName / Resources / dist.plist a los derechos de firma de código

  2. Presione cmd + B con dispositivo iOS o un dispositivo real seleccionado como Build Target

  3. Cuando haya terminado -> desplácese a la carpeta “Productos” y haga clic con el botón secundario en yourAppName.app

  4. Elija “Mostrar en el buscador”

  5. Crea una carpeta con Nombre Carga útil ( “P” mayúscula )

  6. Copie su nombre de aplicación en su carpeta de carga útil

  7. Crea un archivo zip desde tu carpeta de carga útil

  8. Cambie el nombre del zip a yourAppName.ipa

HECHO

Si ninguno de los anteriores te ayudó … después de mucho tiempo …….

Eliminé el valor en Info.plist para la versión de paquete porque me alegré con solo Bundle Version Short 1.0. Malo. No hagas esto

* Nota: De hecho, hice esto editando en la interfaz de usuario de la derecha sin darme cuenta de que pondría una clave vacía en el archivo Info.plist. Creo que eso lo invalida. Mi paquete apareció como otros elementos durante el proceso de archivado y no tenía ícono, y no pude cargarlo a ningún lado.

Esto se reduce a valores inválidos en Info.plist. Si no es un archivo válido, intente descomprimir un archivo antiguo y colocar / sobrescribir el archivo actual y ver si lo soluciona al reconstruir el archivo.

Después de probar casi todo:

  • Limpiar, archivar
  • eliminar DerivedData, Archive
  • reinicie Xcode (estaba usando XCode7), Archive
  • combinaciones de arriba …

Entonces noté que mi partición de arranque tenía “poco espacio libre en el disco” … aproximadamente 1GB o menos. Reinicié, luego obtuve alrededor de 18GB gratis.

Luego abrí Xcode y proyecto, realicé Archive … y sorprendentemente (después de una hora de tratar de crear un archivo) finalmente obtuve un archivo no genérico.

No tengo idea si es un problema de disco libre que lo solucionó o si reinicié el macOS que lo arregló, pero funcionó para mí.

Si tiene algún archivo .xcodeproj en Proyecto> Objetivos> Fases de comstackción> dependencias de destino, elimínelo de allí y luego cree su ipa. Esto funciona para mi. Aclamaciones

Puede obtener una respuesta aquí: xcode está creando un archivo xcode genérico en lugar de un archivo de aplicación de iOS.

En mi caso, tuve que mover tanto FMDB como BlocksKit a bibliotecas estáticas. Anteriormente se construyeron como subproyectos. Recuerde que puede usar lipo para crear bibliotecas universales. Al construir los productos finales, el código del simulador se eliminará automágicamente.

Otra posible razón para esto es tener referencias en “Dependencias de destino” a proyectos para una plataforma diferente. En mi caso particular, estaba trabajando en un proyecto que comparte código para OSX e iOS. En uno de los objectives de iOS, accidentalmente agregué un objective OSX como dependencia.

Para ser exhaustivo, estoy publicando mi solución.

Experimenté exactamente el mismo problema al intentar crear un archivo de un proyecto de iOS en Xcode 5.1.1 (5B1008). Ninguna de las sugerencias anteriores solucionó el problema, y ​​la mayoría de ellas eran irrelevantes (no había agregado ningún Frameworks, y no tenía ninguna entrada Public en la sección Copiar cabeceras de mis Fases de comstackción).

En mi caso, solucionar el problema consistía en simplemente cerrar mi proyecto, eliminar los archivos que había hecho previamente, ir a Preferencias> Cuentas, eliminar mi cuenta de desarrollador, salir de Xcode, reiniciar, volver a agregar mi cuenta de desarrollador, iniciar el proceso de Archivo de nuevo. Esto solucionó mi problema de inmediato.

Una solución más, ya que todo lo anterior no funcionó para mí …

Cambié las User Header Search Paths del User Header Search Paths (supongo que las Header Search Paths funcionarían igual de bien) a "$(BUILT_PRODUCTS_DIR)/BlocksKit" .

Antecedentes :

En BlockKit, los desarrolladores han estructurado los encabezados en el proyecto principal de forma diferente a la estructura en la implementación. Por lo tanto, no puede hacer referencia a los encabezados del proyecto y debe hacer referencia a los encabezados copiados en el directorio de comstackción.

La forma en que esto funcionó para mí en (Xcode 5) Tenía 2 objectives y cuando edité el esquema, en el panel izquierdo del editor de esquemas, verá [BUILD, RUN, TEST, PROFILE XXX.APP, ANALYZE, ARCHIVE ] desde el panel BUILD, verá los objectives de su proyecto enumerados en una lista. En el extremo derecho verá las selecciones de ARCHIVO, asegúrese de seleccionar solo un objective para archivar.

Tenía 2 de mis objectives seleccionados en mi proyecto, solo revisé el objective que quería en el producto, ¡y funcionó!

Resolví este error abriendo únicamente el proyecto de la aplicación en XCode, es decir. no abrir un espacio de trabajo que comprenda la aplicación y otros proyectos / bibliotecas / marcos.

Al tener 2 proyectos separados, un framework o una biblioteca compartida y una aplicación iOS, tuve que abrir 2 ventanas XCode diferentes, cada una abriendo directamente el archivo .xcodeproj en lugar del .xcworkspace común, con el fin de construir cada una de ellas.

Como un buen efecto colateral, XCode ya no reconstruye todos los objectives de cada proyecto después de hacer un Limpiar , lo que da como resultado tiempos de comstackción en corto.

Antecedentes: estoy creando un SDK de código abierto y una aplicación de demostración iOS. Los dos abrí en un solo espacio de trabajo. Establecer Omitir instalación en en los objectives del SDK evitaría que alguien creara un archivo, ya que estaría vacío, por lo que esta no era una opción. Utilizar Project en lugar de encabezados públicos daría lugar a que un archivo no tenga los archivos de encabezado que deberían distribuirse, por lo que tampoco era una opción.

Porque era porque estaba trabajando en un espacio de trabajo. El proyecto se archivó pero no se mostraría en la ventana del organizador. Cerré el espacio de trabajo y abrí el proyecto por sí mismo. El archivado se ha abierto en el organizador … espero que sea de ayuda.

En mi caso, tenía un script personalizado que copiaba algunos archivos temporales en:

 ${TARGET_BUILD_DIR}/myTempDir 

Eso significaba que, después de investigar el archivo para inspeccionar su contenido, encontré justo al lado del archivo .app una carpeta myTempDir. Una vez que modifiqué el script para guardarlo en otro lado, se ordenaron las cosas.

Intente configurar encabezados $ (PROJECT_NAME) en la ruta de la carpeta de encabezados públicos del proyecto de Framework. Debe ir a la configuración de comstackción del Target de la Biblioteca y luego editar la ruta de la Carpeta de los Encabezados Públicos como Encabezados $ (PROJECT_NAME).

Si usa Xcode 7 con cocoapods v.0.38.2 . Intente eliminar los copy pod resources del copy pod resources de su objective de extensión de hoy.

enter image description here

Me encontré con este problema después de agregar una herramienta de línea de comandos de OS X al proyecto de mi aplicación iOS, y Omitir instalación se estableció en NO de forma predeterminada para el objective de la herramienta de línea de comandos. Dado que obviamente no puede instalar un binario OS X en un dispositivo iOS, el archivo predeterminado es un archivo Xcode genérico. Al establecer Omitir instalación en SÍ para este objective, se solucionó el problema.