El proyecto de archivado en Xcode crea incorrectamente un paquete de aplicaciones múltiples

Archivar mi proyecto en Xcode es crear un paquete de aplicaciones múltiples, en lugar de agrupar mi objective principal para su lanzamiento, que es lo que quiero. Específicamente, cuando valido mi archivo en Organizador, me da el mensaje:

“[projectname] no contiene una aplicación de paquete único o contiene múltiples productos. Seleccione otro archivo o ajuste su esquema para crear una aplicación de paquete único”.

Parece que hay alguna configuración en el esquema que debe ajustarse, pero no puedo entender qué causa que se incluyan otros objectives.

Estoy usando Xcode 4.0 por cierto.

OK, respondiendo mi propia pregunta. Resulta que es un problema con proyectos dependientes en XCode 4. Si esto le sucede, vaya a Configuración de comstackción para todos sus proyectos dependientes (por ejemplo, bibliotecas estáticas) y asegúrese de que la opción “Omitir instalación” en “Despliegue” esté configurada a SÍ.

Más detalles aquí: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/

Para resolver este problema, es necesario corregir dos cosas en el subproyecto (s):

  1. Como descubrió Jared, en Configuraciones de comstackción, configure “Omitir instalación” en “Sí”
  2. En Build Fases, examine la sección Copiar encabezados. Si hay archivos de encabezado listados como Privados o Públicos, arrástrelos a la sección Proyecto.

Hice lo siguiente para que funcione para mí:

  1. para la biblioteca estática three20, usé cocoapods para incluir los archivos dentro del proyecto principal … simplemente me deshice de todos los problemas que tres20 me estaban dando (y son muchos). Por cierto, traté de reemplazar tres20 con Nimbus … pero Nimbus carecía de algunas de las características para las que mi proyecto estaba usando tres20 … por lo que Nimbus no fue útil.
  2. establezca skip install en yes en la configuración de comstackción para todos los otros sub proyectos / bibliotecas estáticas y cambie los encabezados de copia de público a proyecto en fases de comstackción
  3. lo más importante: debajo de las bibliotecas secundarias … en las fases de comstackción me aseguré de que el destino de los archivos de copia se cambiara de la Absolute path al products directory .

¡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 to Project o los archivos que debe cambiar de la ruta absoluta al directorio de productos. pero ese directorio (es decir, usr / local / include) varía según la estructura de directorios de su sublibrary

Tuve una fase de comstackción de archivos de copia que olvidé (copié algunas fonts en ~ / Library / Fonts). Después de eliminar esta fase de comstackción, funcionó bien.

Si ninguna de las respuestas anteriores soluciona el problema, recomiendo exportar el archivo al buscador y echar un vistazo a lo que está fuera del paquete .app.

Editar: consulte https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:–'Does-not-contain-a-single-bundle

También tuve este mismo problema “[projectname] no contiene una aplicación de paquete único o contiene múltiples productos. Seleccione otro archivo o ajuste su esquema para crear una aplicación de paquete único”. después de actualizar a xcode5.

el problema era que un montón de campos en mi configuración de comstackción para ‘lanzamiento’ estaban en blanco. Supongo que xcode4 cambió automáticamente a la configuración de depuración.

anwyays: mi solución fue encontrar todas esas configuraciones de ‘liberación’ que estaban en blanco y establecerlas en la configuración de depuración. En particular, era la configuración del archivo Info.plist.