Xcode 5: errores de derecho de firma de código

149

He creado una nueva aplicación que admitirá IOS 7. Obtuve el nuevo XCode 5 GM e intenté firmar mis aplicaciones utilizando mi nuevo perfil de aprovisionamiento y certificado de distribución, pero tengo problemas con la distribución. Constantemente recibo el siguiente error:

"Derechos de firma de código no válidos. Los derechos en la firma del paquete de su aplicación no coinciden con los contenidos en el perfil de aprovisionamiento. Según el perfil de aprovisionamiento, el paquete contiene un valor clave que no está permitido: '[XXXX.com.muestra .company] 'para la clave' keychain-access-groups ".

También el mismo error para un valor clave llamado application-identifier.

Captura de pantalla del error:

ingrese la descripción de la imagen aquí

Benjamin de Bos
fuente

Respuestas:

208

La solución radica en la nueva opción en Xcode 5 que dice perfil de aprovisionamiento. Simplemente configure el perfil de aprovisionamiento del objetivo del proyecto en el correcto y funcionará.

ingrese la descripción de la imagen aquí

Benjamin de Bos
fuente
66
Para agregar a esta respuesta, tenía ambos tipos de distribución y versión para el perfil de aprovisionamiento. Obtuve este mismo error y fue porque tenía un perfil de desarrollo establecido para el tipo Release (pensé que estaba usando el tipo Distribución y no noté el tipo Release). Una vez que configuré eso en mi perfil de distribución, funcionó.
Bek
44
Para aclarar aún más esta respuesta, había estado tratando de configurar mi perfil de aprovisionamiento y mi identidad de firma de código en la fila de nivel superior de cada uno, utilizando la vista Combinada. Al hacerlo, se volvió a colocar en <Valores múltiples>. Sin embargo, cuando expandí ambas filas, vi los subtítulos "Cualquier SDK de iOS" para cada configuración configurados en Ninguno, aunque las filas de Depuración / Liberación enumeraban la identidad de perfil / firma adecuada. Archivar en este estado todavía me dio el error, hasta que configuré explícitamente todas las filas de "Cualquier SDK de iOS" en sus valores correctos.
qix
1
¡Hemos pasado días en este! Lo malo de esto es que todavía tenemos que elegir el mismo perfil nuevamente al construir el IPA. ¿Cómo te enteraste de esto, Benjamin?
cregox
2
Lamentablemente, no funciona para mí. Revisé mis perfiles en el sitio web developer.apple.com y tengo habilitada la compra de Game Center y In App. Yo tampoco uso y me pregunto si eso podría ser un problema.
JScarry
44
Para agregar una aclaración adicional, tenga en cuenta que Xcode le permite elegir la información del perfil de aprovisionamiento para un proyecto y un objetivo . Debe asegurarse de cambiar la configuración del objetivo, no solo el proyecto.
Brian Stormont
55

Si eres como yo y crees que lo intentaste TODO , archivaste tu proyecto más de diez veces, te golpeaste la cabeza con el teclado y aún recibes este error. Hazte un favor y simplemente reinicia XCode , funcionó para mí. En algún momento Apple ... te odio.

VGruenhagen
fuente
Construí dos aplicaciones diferentes en una sesión de xcode y obtuve 1000 errores. reinicio trabajado. ¡gracias!
donmarkusi
Esto funcionó para mí también. Estoy usando Xcode 6.3. No pude seleccionar la cuenta de desarrollador de Apple para la firma del código. Se mostraba un mensaje de error totalmente no relacionado cada vez que el "id de la aplicación ios 'xxxxxxxxx' no admite cambios en la función de mapas". Un simple reinicio de xcode me lo arregló.
Sahil
3
Si pudiera votarte 1000 veces, lo haría. Esto funcionó para mí. Esto sucedió en XCode 7.1.
Manu Kanthan
25

Pasé por muchos de los pasos anteriores, pero lo que finalmente funcionó para mí fue actualizar mis perfiles en Xcode. No estoy seguro de por qué era necesario ya que el perfil de distribución de mi aplicación ya aparecía en la lista. Aquí están los pasos:

  1. Preferencias de Xcode
  2. Pestaña Cuentas
  3. Seleccione su ID de Apple
  4. Presione el botón Ver detalles en el panel de detalles de ID de Apple
  5. Presiona el botón Actualizar en la esquina inferior izquierda
Joe Regan
fuente
2
Una vez que haga esto, también debe volver a ejecutar el comando Construir y archivar para asegurarse de que se aplica el nuevo perfil. (Al menos, eso era necesario para mí.)
Brent Royal-Gordon el
12

En mi caso, activé las mismas capacidades en Xcode que en los servicios de aplicación en developer.apple.com. Eso funciona para mi

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

novecapa
fuente
Esto es lo que funcionó para mí: no puedo desactivarlos en el centro de desarrolladores, y parece que iOS 7.0 compilar con Xcode 5.1.1 los requería.
Matt H
6

En mi caso (lo siento) cambié "Equipo" a "Ninguno" en -> General -> Identidad

En otro caso, necesitaba cambiar esta identidad de "Ninguna" a la cuenta de desarrollador que administra las identidades y los perfiles.

Xcode a veces se equivoca mucho con la firma de código, parece. O, los simples mortales simplemente no somos lo suficientemente inteligentes como para entender lo que está haciendo, por supuesto. ¡No te rindas, todos estamos pasando por un código que firma tortura a veces!

RickJansen
fuente
Wow, me salvaste la noche, gracias. Pero ... ¿por qué funcionó?
Martin
¿Por qué funcionó? ... Creo que Xcode es un producto extremadamente complejo, y las identidades y el perfil de provisión han sido difíciles desde el principio. Creo que ya nadie tiene una comprensión completa de las interrelaciones. Yo no. A veces es prueba y error, como muestra este hilo.
RickJansen
5

En mi caso, tuve que configurar el perfil de suministro correcto para la versión, y luego tuve que reiniciar Xcode. Antes de reiniciar, tenía el mismo perfil de provisión y no funcionaba. Entonces, a veces un reinicio puede hacer milagros. Quizás esto ayude a alguien.

Beny Boariu
fuente
3

Si alguien usa un GameCenter, verifique esta sección en su objetivo. Trabajé con algún proyecto antiguo y hubo 2 errores (pero todo funcionó bien). Deshabilitar y habilitarlo de nuevo resolvió este problema.ingrese la descripción de la imagen aquí

Lo más probable es que esta acción agregue el derecho de Game Center a la ID de la aplicación y la maneje por sí misma.

berilio
fuente
3

1.Vaya a la carpeta del proyecto, elimine los archivos * .entitlements. 2.A continuación, vaya al objetivo del proyecto xcode -> configuración de compilación -> derechos de firma de código - eliminar valores 3.Clean 4.Run

Vlad 25 WLD
fuente
3

Ah, este glorioso error. Para mí cada vez que veo este error, verifico lo siguiente:

1. Permita que XCode acceda a la información de su perfil de aprovisionamiento todo el tiempo : si XCode sigue preguntando cuando lo inicia para tener acceso a los archivos privados de su computadora para que pueda obtener información del perfil de aprovisionamiento con las opciones para permitir el acceso siempre, no ahora, o solo una vez: configúrelo para SIEMPRE PERMITIR el acceso

2. Si tiene archivos de derechos antiguos que están dando vueltas a su proyecto, deshágase de ellos y cualquier signo de ellos ; si ve un archivo .entitlements en su proyecto, elimínelo (o al menos elimine la referencia si no está seguro) está listo para eliminarlo por completo), luego asegúrese de que la línea 'Derechos de firma de código' en la sección 'Firma de código' en Configuración de compilación esté vacía

3. Verifique sus Servicios de aplicación en línea y combínelos con sus Servicios en XCode para la aplicación : vaya al Centro de miembros de Apple y verifique el ID de la aplicación para su aplicación, haga clic en la aplicación para ver sus 'Servicios de aplicación' y vea qué ha verificado, luego vaya a XCode y consulte la sección 'Capacidades' para asegurarse de que los dos tengan la misma lista de servicios de Apple en ambos

4. Asegúrese de asignar un perfil de aprovisionamiento válido a su aplicación antes de validar : verifique su perfil de aprovisionamiento para su aplicación en el Centro de miembros de Apple, asegúrese de que no haya caducado, tenga la ID de aplicación correcta con la identificación y distribución correcta del paquete . Descargue y haga clic en el nuevo perfil de aprovisionamiento para asegurarse de que XCode lo tenga, o vaya a XCode> Preferencias> Cuentas> haga clic en su cuenta y 'Ver detalles' y luego haga clic en el botón de la esquina inferior para sincronizar todos los perfiles a XCode. Debe tener el perfil disponible para seleccionar ahora en la sección 'Firma de código'. Una vez que tenga el perfil de aprovisionamiento correcto, puede establecer las líneas de 'Identidad de firma de código' en la opción correcta para ese perfil de aprovisionamiento.

Nota: si realiza un certificado de distribución, puede ayudar establecer todas las líneas de 'Identidad de firma de código' en la identidad que utiliza para la distribución, incluidas las líneas de depuración

5. SI TODO LO DEMÁS FALLA - Limpie su proyecto y reinicie XCode y algo de magia de Apple podría funcionar bien la próxima vez que abra su proyecto e intente validar

ColosalChris
fuente
2

Si está creando un antiguo proyecto 3.1.5, Xcode 5 tiene algunos errores que desafortunadamente hacen que la respuesta de Benjamin sea imposible, ya que no hay perfiles de aprovisionamiento para elegir. Después de muchas horas de lectura atormentada de los archivos del proyecto Xcode, se me ocurrió esta solución que funcionó para mí:

  • En el panel Utilidades (a la derecha) en Xcode 5, en Documento del proyecto, cambie de Xcode 3.1-compatible a Xcode 3.2-compatible.
  • Ingrese el nombre de su organización.
  • Proyecto cerrado
  • Abra su archivo de proyecto, p. Ej. open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Elimine las dos cláusulas de distribución ( isa=XCBuildConfiguration).
    • Elimine las dos líneas que lo acompañan en buildConfiguration (una en PBXNativeTargety una en PBXProject XCConfigurationLists)

Ahora está listo para volver a abrir, archivar y enviar a la tienda de aplicaciones - ¡voilà! Funciona de nuevo!

Como creo que funciona

Supongo que esto funciona porque Apple, en algún lugar de la línea, decidió abandonar la necesidad de una configuración de distribución separada, lo cual es algo bueno. Cuando archivo, Xcode codifica automáticamente los signos para su distribución. Así es como debería haberse implementado en primer lugar, es una pena que Apple no pueda hacer que la migración automática forme parte del IDE; en su lugar, nos obligan a los desarrolladores a pasar décadas para hacer que esto funcione.

Jonas Byström
fuente
2

He estado luchando con este problema durante más de un día, probando todo tipo de soluciones sugeridas aquí y en otros lugares en Internet. Nada funcionó...

¡Pero finalmente logré resolver el problema!

El problema que tuve fue con una aplicación antigua que no había tocado en más de 3 años, y ahora estaba a punto de lanzar una actualización tan esperada. Desde el momento en que lancé la aplicación, Apple ha estado actualizando cómo funcionan los certificados y el Id. De la aplicación. Han introducido el concepto de Id. De equipo que parece recomendado para usar. En particular, el sitio de "Certificados, identificadores y perfiles" de Apple ha visto muchos cambios desde entonces.

Allí me di cuenta de que el perfil de aprovisionamiento que estaba usando para App Store Distribution estaba conectado al ID de la aplicación, ED8xxxxxxx.com.rostsolutions.*pero al mirar el ID de la aplicación para el juego que estaba a punto de enviar, noté que el ID de la aplicación estaba ATMxxxxxxx.com.rostsolutions.Swisch. ¡Así que el prefijo de Id. De la aplicación no coincidía! Esa parecía ser la raíz del problema. Entonces, lo que hice fue crear un nuevo perfil de aprovisionamiento conectado al ID de la aplicación ATMxxxxxxx.com.rostsolutions.Swisch. Usando ese perfil de aprovisionamiento, envié con éxito mi aplicación a App Store y ahora mantengo mis dedos cruzados para que todo lo demás funcione bien al lado de Apple.

(En primer lugar, intenté conectarme al nuevo perfil de aprovisionamiento con el comodín Id ATMxxxxxxx.com.rostsolutions.*, pero eso no pareció funcionar).

Pero lo que me desconcierta es que cuando miro la aplicación anterior en iTunes Connects y voy a Detalles binarios, dice que el ID de la aplicación es ED8xxxxxxx.com.rostsolutions.Swisch. Entonces, ¿por qué la página "Certificados, identificadores y perfiles" enumera el ID de la aplicación como ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
fuente
Gracias por publicar este Daniel. Veo un comportamiento similar que impide que se utilicen los certificados y perfiles deseados. Cada vez que descargo un certificado o dejo que Xcode lo haga, aparece una identificación de equipo 'fantasma' que 'rompe' la capacidad (uso) de iCloud en mi caso. No hay resolución para mí todavía.
David
¡DIOS MIO! ¡Esta misma basura nos está sucediendo con más de 50 aplicaciones! Ugh el equipo fantasma nos está matando. ¿Por qué Apple? ¿Por qué?
Sukima
2

Mi problema se resolvió eliminando mi ID de Apple de Preferencias-> Cuentas y luego volviéndola a agregar. Luego, todos mis archivos de perfil de aprovisionamiento aparecieron en el panel de utilidades Ver detalles. Elegí por error "Perfil de aprovisionamiento de equipo Mac: *" en lugar del perfil de aprovisionamiento de distribución real para el proyecto, pensando que era una selección genérica. Los archivos de aprovisionamiento deben ser específicos del proyecto. Ah, y por cierto, asegúrese de que su perfil de aprovisionamiento tenga los derechos correctos (por ejemplo, Maps). Logré lanzar una aplicación con OSX Maps sin el derecho y Apple la aprobó, ¡pero no apareció Maps en la versión de producción!

Brainware
fuente
1

En mi caso, tuve el mismo problema, mi solución fue cambiar el 'Perfil de aprovisionamiento de versión' en la Configuración de compilación antes de hacer el Archivo. Hago esto dos veces, una para la distribución de la App Store y otra para la distribución Ad Hoc. También agrego un comentario en mis archivos. Mi conclusión es que hay algo roto en la "nueva firma de archivo".

Héctor
fuente
1

Hay un muy buen tutorial para resolver ese problema en este sitio web.

Dice que este problema puede ocurrir cuando su Identificador de paquete de proyectos es diferente al que ingresó en el sitio web de iTunes Connect .

130e13a
fuente
1

Creo que xcode 5 usa "lanzamiento" en lugar de "distribución" que puede crear usted mismo.

superarts.org
fuente
1

Si todo lo anterior no funcionó (en mi caso, después de un par de días sin suerte intentando todo), solo tengo una aplicación para Mac. ¡CUIDADO CON REVOCAR!

1) Revocar a mano todas las "Distribución de aplicaciones de Mac" y "Distribución de instaladores de Mac"
2) Limpiar certificados relevantes y claves abiertas en Llavero ( Advertencia: exportar antes de eliminar)
3) Reiniciar Xcode 4) Ir a (en Safari) developer.apple .com -> certificados, etc. 5) Cree CertificateSigningRequest.certSigningRequest en Keychain-> Certificate Assistant
6) Cree a mano en developer.apple.com tanto "Mac App Distribution" como "Mac Installer Distribution" con su * .certSigningRequest
7) Provisioning Perfiles -> Distribución -> crear / corregir provisión personalizada para AppStore (especialmente lo llamo "Perfil de provisión Mac para AppStore"
8) Xcode -> Configuración -> Cuenta -> Su cuenta ->Actualizar 9) Xcode Clean -> Archivo -> Validar

WINSergey
fuente
1

He estado luchando con un problema similar (estaba construyendo para la distribución Ad-Hoc). Lo único que ha cambiado desde la última implementación exitosa fue agregar dos dispositivos al perfil de aprovisionamiento.

Después de verificar doble y triplemente todas las configuraciones de compilación, regeneré el perfil de aprovisionamiento (sin cambiar nada), lo volví a descargar y funcionó bien.

Así que tenga en cuenta: si no hay una explicación lógica, siempre puede probar el viejo vudú de TI.

También recomiendo la Utilidad de configuración de iPhone , que a pesar de su nombre, es útil para verificar qué perfiles de aprovisionamiento tiene en la computadora.

Tomek Cejner
fuente
1

ERROR ITMS-9000: “Este paquete no es válido. Las nuevas aplicaciones y actualizaciones de aplicaciones enviadas a App Store deben estar compiladas con versiones públicas (GM) de XCode 5.1.1 o superior y iOS 7 SDK. No envíe aplicaciones creadas con software beta.

hi0001234d
fuente
0

Si varios desarrolladores están utilizando la misma cuenta del centro de miembros. Uno de ellos no puede usar un certificado creado por otros porque usaron una solicitud de certificado creada usando sus computadoras.

Debe usar un certificado creado por usted (solicitud de certificado creada usando su computadora).

Alternativa, les dije que le enviaran el Perfil de desarrollador. No estoy seguro del nombre. para usar un certificado creado en otra computadora.

Hasan
fuente
0

Los derechos de firma de código se producen debido a que su recurso no contiene el archivo de derechos en los recursos, solo vaya a la configuración de compilación y busque los derechos de firma de código elimine la entrada para depurar y liberar, vuelva a ver el proyecto de compilación y verá que no hay ningún error. Salud

Shauket Sheikh
fuente
-1

Tuve el mismo problema, pero nada de lo escrito aquí funcionó para mí. Sin embargo, encontré una manera simple que funcionó para mí. Aquí se explica cómo hacerlo:

1) En su Proyecto y en la configuración de compilación de su (s) Destino (s), elija "Ninguno" para todos los perfiles de Aprovisionamiento y elija "No firmar con código" para todas las Identidades de firma de código.

2) Ahora, elige tu Target y ve a la configuración de construcción. En la configuración de Liberación de identidad de firma de código, elija "Distribución de iOS" para "Cualquier SDK de iOS". Y luego, en la configuración Liberación de perfil de aprovisionamiento, elija su perfil de distribución para "Cualquier SDK de iOS". Después de eso, la configuración de Liberación de identidad de firma de código debería cambiar automáticamente a "Distribución de iPhone".

3) Archive su construcción y valide. Ahora debería funcionar bien. ¡Eso es!

jimpavloff
fuente