2010-02-01 12 views
5

Finalmente hemos llegado al punto de enviar nuestra primera aplicación de iPhone a la tienda de aplicaciones (o intentar), pero parece que no puedo lograr que iTunes Connect acepte la subir.No se puede cargar la aplicación binaria en la App Store

He intentado a través del sitio web ("El archivo binario que ha cargado no es válido. La firma no es válida o no está firmada con un certificado de envío de Apple") y Application Loader ("Info.plist no no contiene una CFBundleResourceSpecification ").

Después de un montón de lectura (incluyendo questions like these), relectura, y buscando en Google, puedo decir que:

  • estoy seguro de que el identificador del paquete coincide con el AppID.
  • Hay un Icon.png, es un archivo PNG de 57x57 px, y ese es el nombre exacto en Info.plist.
  • Estoy haciendo un dispositivo, no simulador, compilación.
  • El proceso de firma tiene éxito: los resultados de la compilación lo muestran y ejecutar codesign -vvvv MyApp.app indica que no hay problemas.
  • No hay caracteres extraños en la ruta del archivo ZIP.
  • He eliminado la carpeta de compilación y reconstruido el binario bastantes veces.

Ahora bien, es cierto que en la aplicación integrada, la Info.plist no contiene una clave CFBundleResourceSpecification, pero no es del todo claro para mí cuando dicho valor debe ser, o qué más tengo que añadir para hacer que esto funcione (La única referencia que puedo encontrar usando la búsqueda de Apple es code signing release notes ... pero, como mencioné anteriormente, el paso de firma de código está teniendo éxito, por lo que yo sé)

¿Alguien ha encontrado alguna explicación para esto? problema que no he mencionado ya?

EDIT: Aquí está el (ligeramente editada) de salida de la firma de código paso de la construcción, Fwiw:

code signing screenshot http://img70.yfrog.com/img70/8988/codesign.png

+0

¿Has podido subir algo antes? ¿Estás seguro de que tus certificados son todos válidos y no han expirado? – fbrereto

+0

Además, ¿está seguro de que está compilando para 3.1.2 y no decir, 3.2 beta? – Aaron

+0

@fbrereto este es nuestro primer envío de aplicación. El perfil de distribución definitivamente no ha expirado. (Y esperaría que si los certs no fueran válidos, que el paso de codesign de la compilación no fuera verde.) –

Respuesta

10

El problema parece ser que estaba usando json-framework en mi aplicación, y lo incluyo como un SDK adicional por the instructions in the wiki. Mi suposición es que XCode se confundió por la presencia de> 1 SDK, y por lo tanto no pudo encontrar el ResourceRules.plist predeterminado como se suponía.

He encontrado dos soluciones (así, soluciones, de todos modos):

  1. Use la "firma de código Reglas de Recursos Path" de la estructura Ajuste (que es blanco de forma predeterminada) para especificar la ruta de acceso al XCode archivo debe utilizar : $(SDKROOT)/ResourceRules.plist. Esto funciona, y parece razonablemente inofensivo, pero es frustrante en el sentido de que XCode debería ser capaz de resolver esto por sí mismo. (Encontré esta solución en un very old issue archivado en json-framework.)
  2. No use el enfoque SDK. En su lugar, solo incluya los archivos directamente en el proyecto y actualice las declaraciones #import con rutas locales. Este es el enfoque que terminé tomando, ya que tomamos la decisión general de doblar todas las dependencias externas en el proyecto mismo (para que otros desarrolladores tengan menos configuración que hacer en sus máquinas para comenzar a funcionar).

No estoy seguro de si esto es un error en XCode, o algo está mal con json-framework pero tengo filed an issue en este último por las dudas.

ACTUALIZACIÓN, 30 de junio de 2010: el problema que archivé se ha cerrado, y el Sr. Brautaset planea eliminar el soporte para la opción SDK en el próximo lanzamiento (2.3) del proyecto. Además, el code now lives on GitHub, aunque las páginas de Google Code todavía existen por el momento.

+0

Me encanta tu hombre. Acabo de recibir el mismo problema y me estaba golpeando la cabeza durante casi una hora. También instalé Xcode 3.2.2 beta, así que comencé a contemplar la reinstalación de todo. ¡Usted gobierna! –

+0

Tuve un problema muy similar con el SDK de diagrama núcleo que estaba usando. Establecer la "Ruta de Reglas de Recursos de Firma de Código" como se describió anteriormente resuelve mi problema. Muchas gracias. – aogan

0

¿Seguro que está construyendo con una distribución, en contraposición al desarrollo , certificado y mobileprovision?

+0

Sí. La identidad de firma de código se establece en nuestro perfil de distribución y el paso de creación de firma de código muestra el nombre de perfil correcto. –

0

Supongo que está cargando un archivo .zip.

Acabo de comprobar una aplicación que cargué, y CFBundleResourceSpecification está solo en las versiones firmadas (es decir, las compilaciones del dispositivo).

+0

Sí, cargando un archivo ZIP. –

+0

Estoy en el mismo proceso cuando creo un archivo .mobileprovision para la distribución del App Store, la sección Dispositivos está en gris, no puedo seleccionar ninguno, ¿por qué? –

0

¿Está haciendo alguna de sus operaciones de construcción/copia/compresión desde la línea de comandos? Si es así, debe tener mucho cuidado con los enlaces simbólicos. El .app viene con un subdirectorio como un enlace simbólico a otro, y si lo copia o lo comprime sin los indicadores correctos, se imprimirá el contenido, lo que daña la designación del código.

Esto me pasó a mí, y la peor parte es que las compilaciones ad-hoc funcionan bien sin el enlace simbólico, por lo que no notará el problema hasta la compilación de la tienda de aplicaciones.

+0

Realizando todas las compilaciones a través de XCode, e intenté comprimir ambas desde la línea de comandos y (normalmente) a través de la opción del menú de compresión del Finder. (Vi una serie de discusiones que mencionaban el problema de enlace simbólico). –

0

Este mensaje puede ocurrir por otra razón (como acabo de descubrir esta mañana): si su proyecto tiene múltiples Info.plists, el Cargador de aplicaciones puede descubrir el Info.plist "incorrecto" y confundirse.

Esto me estaba sucediendo porque una parte automatizada de la creación creaba un Info.plist en un paquete incluido en el proyecto.

Sombrero de punta a aquí para obtener la solución: http://infinite-sushi.com/2010/08/the-case-of-the-missing-cfbundleresourcespecification/

1

Para mí, después de comprobar todas las cosas (codiseño, el archivo de icono ...) pero no se puede cargar la aplicación, intenta eliminar el archivo incorporado . Recuerde copiar file.app para comprimir su aplicación.

0

Para mí, la solución fue crear una certificación de distribución en: Apple Developer Provisioning Portal.

+0

Sin duda, es un paso necesario para enviar * cualquier cosa * a la tienda de aplicaciones, pero también una esperada y bien documentada. No es la causa de la confusión original aquí. –

Cuestiones relacionadas