unknown identifiers developer certificates certificado apple ios xcode codesign

ios - identifiers - provisioning profile



Codesign devolvió el error 1(formato de objeto ifile no válido o inadecuado) (3)

En caso de que obtengas esto en una versión reciente de Xcode, lo que realmente quieres es, en el shell:

export CODESIGN_ALLOCATE=`xcode-select -print-path`/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

que utilizará codesign_allocate de la versión de Xcode que está utilizando.

Puede actualizar la versión de Xcode que usan las herramientas de la línea de comandos ejecutando xcode-select -switch

Estoy trabajando con Xcode 4.1 build 4B110f tratando de tener mi aplicación iOS lista para cargar. Pasa el paso Producto | Archivo sin errores, solicitando dos veces permiso para firmar algo. Pero cuando intento validar el archivo desde el Organizador, falla:

### Codesigning ''/Users/uqrchern/Library/MobileDevice/Provisioning Profiles/70D2381D-3733-4F5D-88B2-4729572C2864.mobileprovision'' with ''iPhone Distribution: Ron Chernich'' + /usr/bin/codesign --force --preserve-metadata --sign iPhone Distribution: Ron Chernich --resource-rules=/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app/ResourceRules.plist --entitlements /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/entitlements_plistrZ1Vwko6 /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app Program /usr/bin/codesign returned 1 : [/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: replacing existing signature /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: object file format invalid or unsuitable ] error: codesign failed with error 1

He analizado todos los problemas y soluciones similares (algunos de los cuales no tienen ningún sentido o se aplican a versiones realmente antiguas de las herramientas). Ninguno ha hecho la más mínima diferencia.

También he comprobado 3 veces que verificar está utilizando el certificado de "producción", al igual que el paso de codeign que produce el archivo. Incluso he convertido la salida anterior en un script de schell para poder probar todos los certificados manualmente: siempre el mismo resultado.

Tal vez el archivo .app que se está firmando realmente no es adecuado?

Por cierto, codesign no tiene marca de versión, pero la página de manual tiene fecha del 1 de junio de 2006. El binario tiene una fecha de archivo del 20 de noviembre de 2010.

ACTUALIZACIÓN (al día siguiente):

Al investigar el problema, se encontró una referencia poco clara que dice que los códigos necesitan el siguiente conjunto de variantes de entorno:

CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

Usando el resultado de una ejecución de Validate fallida, creé una secuencia de comandos de shell que exportaba esta var justo antes del codeign fallido --force step and viola! El codesign funciona.

Pero esto realmente no me ayuda a preparar mi código para subir. ¿Hay alguna forma de incluir esto en el script ejecutado por el botón Validar del Organizador?

Un poco más tarde, ¡LA SOLUCIÓN! :

Según la teoría, hay un script en algún lugar que genera todos los comandos que se ejecutan durante un Organizador Validar ... ejecutar, hice algunas excavaciones con grep y encontré. El script de hecho existe y su nombre es:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

Es solo Perl y la solución es agregar la var de entorno requerida a la matriz asociativa% ENV desde el principio, digamos en la línea 72:

$ENV{CODESIGN_ALLOCATE} = ''/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'';

Esto soluciona totalmente el problema. No tengo idea de dónde provienen todos los demás carteles en la web que piensan que lo arreglaron mediante combinaciones de borrado de certificados, construcción limpia, cierre y reinicio de Xcode, etc. Simplemente afirmaré que esta solución favorece la ciencia sobre la superstición y funciona para mí en Xcode 4.1 Build 4B110f y su script de PackageApplication asociado, que se ejecuta en Snow Leopard 10.6.8 con Perl 5.10.0


Llevé a cabo esta solución por un largo tiempo, pero después de actualizar a Xcode 4.3 con iOS 5.1 SDK, mi script de firma (que llama a codesign ) dejó de funcionar con un cannot find code object on disk error de cannot find code object on disk :

output/Enterprise/Payload/MyProduct.app/MyProduct: replacing invalid existing signature output/Enterprise/Payload/MyProduct.app/MyProduct: cannot find code object on disk Code signing failed, not creating .ipa file

Parece que esta solución no es necesaria para los binarios construidos con Xcode 4.3. Para solucionarlo, actualicé mi script bash para verificar si la ubicación existe antes de exportarlo:

# Only export the environment variable if the location exists, # otherwise it breaks the signing process! if [ -f "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate" ] then echo Export environment variable for codesign_allocate location export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate fi


Solo para que esto se pueda quitar de la lista sin respuesta. Como ha dicho, debe agregar CODESIGN_ALLOCATE a la matriz $ENV :

$ENV{CODESIGN_ALLOCATE} = ''/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'';

Si todos están de acuerdo aquí, creo que esta pregunta finalmente puede cerrarse.

Cuando se utiliza una versión más reciente de Xcode, la ubicación predeterminada es:

$ENV{CODESIGN_ALLOCATE} = ''/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'';