2012-02-14 3 views
17

Cuando se especifica un derecho y una identidad de firma de código en la configuración de generación (Xcode 4.2.1), que tiene el siguiente resultado cuando se genera a partir de Xcode:cómo llamar orden interna-productPackagingUtility en línea de comandos

ProcessProductPackaging "myAppName.entitlements" "/path/to/myAppName.xcent" 
cd /path/to/myAppName/SourceCode 
builtin-productPackagingUtility "/path/to/myAppName/SourceCode/myAppName.entitlements" -entitlements -format xml -o "/path/to/myAppName.xcent" 


CodeSign "/path/to/Garfields Comic Boom 1.0.app" 
cd /path/to/myAppName/SourceCode 
setenv CODESIGN_ALLOCATE /Developer/usr/bin/codesign_allocate 
/usr/bin/codesign --force --sign "myCertificate" --entitlements "/path/to/myAppName.xcent" "/path/to/myAppName.app" 

Me gustaría firmar mi carpeta de aplicaciones al final de la compilación, y no durante la compilación de Xcode.

Mi problema es que no sé cómo generar el archivo xcent en la línea de comandos.

Pregunta: ¿Cómo se generan archivos xcent en la línea de comandos? Hice un hallazgo desde la raíz, no hay nada llamado productPackagingUtility ...

+6

Un punto de partida para un análisis posterior podría ser el archivo (Xcode 4.4): '/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/Framewor ks/DevToolsCore.framework/Versions/Current/Resources/Code Sign.xcspec' (consulte la sección con 'CommandLine =" builtin-productPackagingUtility [...] '). Xcode probablemente instancia la clase' XCWorkQueueCommandBuiltinInvocation_productPackagingUtility' para ejecutar esta tarea (es la única clase con un sufijo 'productPackagingUtility':' nm /[...]/DevToolsCore.framework/Versions/Current/DevToolsCore | grep -i productPackagingUtility'). – Alexander

Respuesta

0

El uso de la utilidad codesign no requiere un archivo xcent. Simplemente puede crear un archivo plist y usarlo para las autorizaciones. Asegúrese de que sea un plist XML, no binario.

2

Me gustaría firmar mi carpeta de aplicaciones al final de la compilación, no durante la compilación de Xcode.

Las versiones recientes de XRC de IIRC se quejan si deshabilita la firma de código para la compilación de un dispositivo.

La manera más fácil de evitar esto es dejar que Xcode lo firme y luego volver a firmarlo más tarde. Los pasos son aproximadamente

  1. Volcado de los derechos originales con codesign -d --entitlements=MyApp.xcent MyApp.app
  2. Si va a modificar perfiles de datos, copiar el nuevo a MyApp.app/embedded.mobileprovision y modificar en consecuencia los derechos (IIRC el formato de archivo tiene una magia de 4 bytes y una 4 bytes de longitud, recuerde actualizar la longitud!).
  3. Vuelva a firmar con su certificado deseado.
0

El formato de los .entornos y el $ {APPNAME} .xcent es el mismo, de modo que solo se puede copiar.

Cuestiones relacionadas