El diseño de código de la API de Dropbox falla en Xcode 4.6.3: "el objeto de código no está firmado en absoluto"


Tengo una aplicación de OS X que se distribuye a través de la Mac App Store, y se actualizó recientemente a Xcode 4.6.3.

Cuando corro mi compilación regular ahora, recibo:

Command /usr/bin/codesign failed with exit code 1:

/Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all
In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework
Command /usr/bin/codesign failed with exit code 1

No puedo discernir ningún otro cambio en mi proyecto, así que no puedo decir si es un problema relacionado con la actualización 4.6.3, o algo más.

He intentado reiniciar Xcode, ejecutar una compilación limpia y limpiar la carpeta de compilación.

Author: Craig Otis, 2013-06-23

6 answers

Creo que me he dado cuenta de esto. He estado ejecutando Xcode 4.6.3 en OS X Mavericks, bajo la impresión de que cualquier herramienta específica de compilación estaba incluida en la aplicación Xcode.

Pero, parece codesign está en /usr/bin. Ya sea puesto allí por uno de los instaladores de Xcode o viene con una instalación del sistema vanilla, no estoy seguro. Pero leyendo la página man para codesign, encontré esta ingeniosa opción:

--deep  When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed
             in turn. Beware that all signing options you specify will apply, in turn, to such nested content.
             When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default,
             verification of nested content is limited to a shallow investigation that may not detect changes to the nested code.
             When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only
             code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.

Y luego encontré este post ( https://alpha.app.net/isaiah/post/6774960 ) de hace dos semanas (~Junio de 2013), que menciona (aunque de segunda mano):

@isaiah le pregunté a un tipo en los laboratorios al respecto. Dijo que codesign ahora requiere que los frameworks incrustados se firmen por separado antes del código firmar el paquete de aplicaciones como un todo.

Volver a ejecutar manualmente el comando codesign que Xcode normalmente ejecuta, mientras agrega la bandera --deep al final, firma la aplicación correctamente.

Todavía no estoy seguro exactamente qué ramificaciones tiene esta firma manual, o si puedo modificar la compilación de Xcode para agregar la bandera --deep automáticamente, pero este parece ser el problema subyacente. (codesign ya no firma profundamente automáticamente tu paquete de aplicaciones.)

 139
Author: Craig Otis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-01 00:37:33

Como se destacó en otras respuestas, hay un cambio en la forma en que funciona la firma de código. Si ha instalado cualquiera de los DP de Xcode 5, las nuevas herramientas se utilizarán incluso si está utilizando Xcode 4.6.X.

Todo lo que necesita hacer en esta etapa (en Xcode 4.6.X) es tomar la bandera deep deep sugerida anteriormente y agregarla a sus banderas de firma de código (Destino, Configuración de compilación) ver imagen de abajo.

Especificación de Firma Profunda de Frameworks Embebidos

 67
Author: rougeExciter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-01 10:55:15

Para mí, este problema fue causado después de arrastrar una carpeta llamada "resources" en mi proyecto. Después de cambiar su nombre por cualquier otra cosa (como" resourcessss " por ejemplo), el error desapareció.

 12
Author: andrei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-18 15:21:43

Tuve el mismo problema, pero la respuesta fue simple: la identidad de firma de código en mi aplicación se estableció en "-", por lo que simplemente configurarlo en "No firmar código" me arregló.

"-" parece ser la configuración predeterminada cuando realizas un conjunto de acciones, aunque no puedo decirte cuáles son.

 4
Author: Maury Markowitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-25 21:14:12

Esto podría ayudar a alguien:

Finalmente descubrí la solución por ensayo y error. En mi caso, tenía un nombre de carpeta que coincidía con la variable" Product Name " en la configuración de compilación. ¡Esto también coincidió con el nombre completo del proyecto! Así que simplemente cambié un campo. Cambié la "Configuración de compilación" - > "Nombre del producto". El valor de MySpecialApp se cambió a My-SpecialApp. ¡Eso fue simplemente! Luego volví a iniciar sesión en el portal de desarrolladores de Apple y creé un nuevo ID de aplicación y perfiles de aprovisionamiento móvil para desarrollo y distribución y el resto es historia. Mis versiones ahora funcionan cuando se implementan a través de la distribución Ad Hoc. Una nota final sobre esto. Este es definitivamente un error que Apple debe alertar al usuario de que ha hecho algo mal y habilitar algún tipo de acción correctiva automatizada. - Ver más en: http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC.dpuf

 2
Author: Thomas Ayoub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 23:33:25

Para mí fue un marco corrupto PaddleMAs que: 1. He eliminado de mi archivo Cocoapods 2. Ran pod install 3. Reinicio mi Xcode

Y resolvió el problema. Por alguna razón, un marco dañado evitará que se firme desafortunadamente XCode no muestra este error muy claramente y le da una buena sugerencia de corrección. Han planteado un error con Apple para arreglar.

 0
Author: Mobile Bloke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-08 19:41:53