Pregunta El codiseño 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 OS X que se distribuye a través de la App Store de Mac y recientemente se actualizó a Xcode 4.6.3.

Cuando ejecuto mi compilación normal 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

Parece que no puedo discernir ningún otro cambio en mi proyecto, por lo que no puedo decir si se trata de un problema relacionado con la actualización 4.6.3 o algo más.

Intenté reiniciar Xcode, ejecutar una compilación limpia y limpiar la carpeta de compilación.


75
2018-06-23 18:32


origen


Respuestas:


Creo que puedo haber descubierto esto. He estado ejecutando Xcode 4.6.3 en OS X Mavericks, con la impresión de que las herramientas específicas de compilación se incluyeron en la aplicación Xcode.

Pero parece codesign es en /usr/bin. Ya sea que lo instale uno de los instaladores de Xcode o que venga con una instalación de sistema vanilla, no estoy seguro. Pero leyendo a través de man página 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é esta publicación (https://alpha.app.net/isaiah/post/6774960) desde hace dos semanas (~ junio de 2013), que menciona (aunque de segunda mano):

@isaiah, le pregunté a un tipo en los laboratorios sobre eso. Él dijo codesign ahora   requiere que los marcos integrados se firmen por separado antes del código   firmar el paquete de la aplicación como un todo.

Reanudando manualmente el codesign comando que Xcode normalmente se ejecuta, mientras que agrega el --deep bandera hasta el final, firma la aplicación correctamente.

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


138
2017-07-01 00:37



Como se destaca en otras respuestas, hay un cambio en la forma en que funciona la firma del código. Si ha instalado alguno de los Xcode 5 DP, entonces las nuevas herramientas se usará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 indicada arriba y agregarla a las banderas de firma de código (Destino, Configuraciones de compilación) ver imagen a continuación.

Specifying Deep Signing of Embedded Frameworks


67
2017-07-01 10:55



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


12
2018-05-18 15:21



Tuve el mismo problema, pero la respuesta fue simple: la identidad de firma de código en mi aplicación estaba configurada en "-", así que simplemente configurándola en "No codificar señal" me solucionó.

"-" parece ser la configuración predeterminada cuando lleva a cabo un conjunto de acciones, aunque no puedo decirle cuáles son.


4
2018-06-25 21:14



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 "Nombre del producto" 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, inicié sesión nuevamente en el portal para 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 lanzamientos ahora funcionan cuando se implementan a través de la distribución Ad Hoc.     Una nota final sobre esto. Esto definitivamente es un error que Apple debe alertar al usuario de que ha hecho algo mal y permitir 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
2018-06-26 11:00



Para mí fue un Framework PaddleMAs corrupto que: 1. Eliminé de mi archivo Cocoapods 2. Ran pod install  3. Reinicié mi Xcode

y resolvió el problema. Por algún motivo, un marco dañado evitará que se firme. Desafortunadamente, XCode no muestra este error de manera muy clara y le ofrece una buena sugerencia de solución. Han planteado un error con Apple para solucionarlo.


0
2018-01-08 19:41