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

170

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

"[nombre del proyecto] no contiene una aplicación de paquete único o contiene varios 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 necesita ser ajustada, pero no puedo entender qué está causando que se incluyan otros objetivos.

Estoy usando Xcode 4.0 por cierto.

Jared Friedman
fuente

Respuestas:

251

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

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

Jared Friedman
fuente
1
¡Usted señor, es mi héroe! No lo habría encontrado tan fácilmente: P
Andrew Natoli
66
Lo cambió a "SÍ" ... todavía falla. :(
Joe D'Andrea
8
La instalación de omisión debe establecerse en Sí solo en la biblioteca estática, no en su Proyecto o Destino. Esta publicación de blog sobre distribución ad hoc se aplica igualmente a las compilaciones de la tienda de aplicaciones y tiene una sección sobre Omitir instalación: musicalgeometry.com/?p=1237
jj0b
8
Algunas bibliotecas (como CorePlot) también requieren que cambie la sección Copiar encabezados de su fase de compilación. Así que asegúrese de mirar también la respuesta de Ryan.
Tim Swast
2
También tengo que mover todos los archivos de encabezado (de la biblioteca estática) en las "Fases de compilación" de destino, en "Copiar encabezados" los moví de "Público" a "Proyecto".
Hlung
151

Debían solucionarse dos cosas en los subproyectos para resolver este problema:

  1. Como descubrió Jared, en la Configuración de compilación, configure "Omitir instalación" en "Sí"
  2. Debajo de Fases de compilación, examine la sección Copiar encabezados. Si hay archivos de encabezado listados como Privados o Públicos, arrástrelos hacia abajo a la sección Proyecto.
Ryan Grimm
fuente
77
Realmente te amo amigo! : D
arielcamus
55
Arreglé todas las configuraciones de "Omitir instalación", pero lo que me faltaba era la sección Copiar encabezado, ¡Gracias!
Thomas Einwaller
2
Estoy usando three20. Este proyecto tiene archivos de encabezado listados como Privados o Públicos, pero si los muevo en la sección del proyecto no se compila. ¿Cualquier sugerencia?
Breezeight
19
Deje de usar Three20, incluso si supera este problema de Xcode. Estoy completamente en serio!
Adam Eberbach
2
Si tiene numerosos proyectos de biblioteca como nosotros y le resulta difícil averiguar qué biblioteca de instalación de omisión está establecida en No o qué archivos de encabezado están causando el problema, intente esto: seleccione el archivo y haga clic en el botón Distribuir. Seleccione la opción 'Guardar productos construidos'. Presiona Siguiente y Guardar. Explore el directorio creado en Finder. El subdirectorio 'bibliotecas' identificará las bibliotecas que necesita para configurar Saltar instalación en Sí. Usr / local / include identificará los archivos de encabezado culpable que necesita para pasar de Público a Proyecto.
Sunil Gowda
10

Hice lo siguiente para que funcione para mí:

  1. para la biblioteca estática three20, utilicé cocoapods para incluir los archivos dentro del proyecto principal ... simplemente me libré de todos los problemas que Three20 me estaba dando (y son muchos ...) por cierto intenté reemplazar three20 con Nimbus ... pero Nimbus carecía de algunas de las características para las que mi proyecto estaba usando three20 para ... así que Nimbus no fue útil.
  2. establezca skip install en yes en la configuración de construcción para todos los demás subproyectos / bibliotecas estáticas y cambió los encabezados de copia de public a project en fases de construcción
  3. lo más importante: en las sub bibliotecas ... en las fases de compilación, me aseguré de que el destino de los archivos de copia cambiara de Absolute patha products directory.

¡y eso fue todo!

pista: para tener una idea de los archivos ofensivos que están causando que su archivo cree un archivo en lugar de una ipa, haga esto:

  1. Seleccione el archivo y haga clic en el botón Distribuir.
  2. Seleccione la opción 'Guardar productos construidos'.
  3. Presiona Siguiente y Guardar.
  4. Explore el directorio creado en Finder.
  5. El subdirectorio 'bibliotecas' identificará las bibliotecas que necesita para configurar la instalación de omisión en Sí.
  6. en algunos casos usr/local/includeidentificará los archivos de encabezado culpable que necesita para pasar de Público a Proyecto 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
abbood
fuente
Te daría 10 estrellas, el número de soluciones que leí hasta encontrar el que me ayudó. Acabo de hacer clic en los archivos que encontré en el paso 6 y los marqué en el área de membresía objetivo del público al proyecto, sin necesidad de nada.
Cristi Băluță
Me alegro de poder ayudar! la razón por la que lo escribí fue porque b / ci pasó por lo que hiciste ... leí como 20 respuestas antes de comenzar a entender lo que estaba pasando ... :)
abbood
¿Alguien puede explicar el paso 6? No entiendo qué significa "usr / local / include identificará los archivos de encabezado culpable" y dónde / cómo debo verificar esos archivos
Andrei F
@ CristiBăluță ¿Cómo encontró exactamente los archivos y en qué parte de la configuración / menús? Tengo el mismo problema con XCode 11.2.1 y no tengo mucha experiencia con xcode. Gracias.
Andrei F
Lo que encontré es que / usr / local / include es una carpeta dentro del archivo (junto con la carpeta de bibliotecas), pero mi archivo genérico no tiene ninguno de ellos
Andrei F
0

También tuve el mismo problema "[nombre del proyecto] no contiene una aplicación de paquete único o contiene varios 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 compilació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, fue la configuración del archivo Info.plist.

roocell
fuente