¿Cómo familiarizarse con los problemas de firma de código?

Cada vez que trato con la firma de códigos y los perfiles de aprovisionamiento ocurren cosas extrañas. La mayoría de las veces obtengo el error "no se encontró identidad de firma de código" y si no, algo así como "no se encontraron perfiles de aprovisionamiento coincidentes" y "no hay perfiles de aprovisionamiento con una identidad de firma válida".

Aunque estoy tranquilo familiarizado con la teoría y las cosas que están detrás de la firma y el aprovisionamiento de códigos, todavía hay muchas trampas con las que me topé cada vez y no sé cómo tratar. A veces falla al configurar una nueva aplicación, a veces no.

introduzca la descripción de la imagen aquí

Hay 5 * 2 forms diferentes de seleccionar la identidad de firma de código. ¿Cuál es la diferencia entre ellos? Y si selecciono uno para debugging y otro para liberación, ¿cuál es el motivo del "Any iOS SDK" ?

Además, hay dos lugares que dan este cuadro de dialog: Project-Settings -> Buildsettings es el primer lugar, y también para el Target en Build Settings. Ambos no están sincronizados, así que si cambio el código de firma en primer lugar, tengo que cambiarlo dos veces en el segundo lugar. ¿Hay alguna manera de mantenerlos sincronizados?

La identidad de la firma del código encajaría mejor en las distintas líneas (debugging, debugging -> cualquier ios sdk, versión, versión -> cualquier ios sdk), ya que puedo elegir entre identidades de desarrollador e identidades de distribución (podría imaginar que la distribución es para lanzamiento y el desarrollador es para debugging, pero debido a todo falla, no lo sé.

Lo que hice:

Hay certificates válidos en el Centro miembro depositados para cada desarrollador de nuestro equipo y uno para la distribución ad hoc para el Equipo. También creamos AppID que refleja exactamente la misma configuration en la configuration del proyecto. Mientras tanto, evitamos usar Variables y usamos exactamente el appid también en la configuration del proyecto para networkingucir los riesgos de este lado y simplificar las cosas.

Al cambiar el perfil de aprovisionamiento de "Automático" a un Perfil específico para esta Aplicación, las identidades de firma de código cambian a valores diferentes, que tampoco están sincronizados entre la configuration del proyecto y la configuration de compilation de destino:

En Target-> Build Settings obtendremos este resultado: introduzca la descripción de la imagen aquí

En el proyecto -> Configuración de construcción obtendremos un resultado diferente: introduzca la descripción de la imagen aquí

¿Cuál sería más preciso? Después de "Producto" -> "Archivo" -> "Validar" obtenemos el siguiente error:

introduzca la descripción de la imagen aquí

No importa aquí si seleccionamos diferentes identidades de firma de código o no. En realidad, solo por jugar 'trail-and-error', probamos casi todas las combinaciones múltiples de identidades de firma de código para aprender qué haría XCode entonces.

Después de este post de error del Archivo-> Validar el perfil de aprovisionamiento seleccionado anterior se reemplaza por otro nombrado por una cadena generada aleatoriamente:

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

¿Quién puede decirme qué sucede aquí y cómo resolver estos problemas?

He leído muchos documentos sobre este tema. Pero la mayoría de los tutoriales sobre este tema están desactualizados debido a que se produjeron varios cambios entre XCode 4 y XCode 6. Incluso los documentos de Apple ofrecen principalmente capturas de pantalla basadas en versiones anticuadas de XCode y también versiones desactualizadas de Member Developer Center.

Actualizar

Como Ian McDonald señaló correctamente, se responde la última pregunta (cubierta por las últimas 2 capturas de pantalla). Después de volver a crear el Perfil de aprovisionamiento, no será reemplazado por cadenas generadas aleatoriamente, pero la creación de IPA aún no funciona con "no se encontraron identidades de firma de código".

Cómo se ve ahora: introduzca la descripción de la imagen aquí

tienes una larga pregunta, pero si tienes problemas con el file o publicas tu aplicación, hay algunos pasos que debes seguir

Primera firma de código

Si construyes tu aplicación con Debug , entonces debug debe firmar con el desarrollador de iPhone -> general si usas muchos o uno específico "depende del certificate que tienes en tu cadena de keys"

pero si construyes tu aplicación con el release entonces deberías tener la certificación de la distribución de iPhone —> general o específica

Segundo perfil de aprovisionamiento

Si construye con Debug , el perfil de provisión Debug debe coincidir con el detalle de su package y ser un desarrollo

release sea ​​una distribución que crees en el sitio de Apple para desarrolladores

Espero que esto te ayude a echarle un vistazo también a esto.

Por lo que estoy leyendo, ha cambiado su perfil de aprovisionamiento en su objective de "xxx.xxx" a "xxx.xxxTests", que de hecho es un identificador de package diferente haciendo que el error sea válido. Realmente tienes dos líneas de acción:

  1. Cambia el identificador de package a "xxx.xxx". Esta es la ruta apropiada de menor resistencia.

  2. Cree un nuevo identificador de package en el portal como "xxx.xxxTests", así como un nuevo perfil de aprovisionamiento para "xxx.xxxTests" vinculado al mismo certificate. Con XCode cerrado, arrastre el nuevo perfil de aprovisionamiento al ícono de la aplicación XCode y luego abra su proyecto.

No debería tener que cambiar su identificador de package para realizar las testings. Cuando vaya a implementar, solo tendrá que cambiar qué perfil de aprovisionamiento está comstackndo su objective (desarrollo vs distribución).

EDIT: Tengo algunos consejos más sobre el suministro de perfiles aquí: ¿Cómo familiarizarse con los problemas de firma de código?

El lado rápido y sucio del aprovisionamiento funciona así:

  • Cuando se agrega al Portal de aprovisionamiento de Apple, su certificate es la key del castillo. Cualquier código que compile tiene que estar asociado con su certificate o no podrá comstackr / exportar su código correctamente.
  • Su identificador de package es esencialmente la forma en que iOS identifica su aplicación. Conceptualmente hablando, si desea instalar su aplicación varias veces en el mismo dispositivo, cree múltiples identificadores de package.
  • Su perfil de aprovisionamiento une todas las piezas juntas. El perfil prov le dice a XCode que planea usar su certificate para comstackr su aplicación identificada por su identificador de package . Si se trata de una compilation de desarrollo, solo los dispositivos asignados específicamente al perfil prov en el portal podrán instalar su aplicación.

Dentro de XCode, debe asegurarse de que su identificador de package de destino coincida con el identificador de package en el perfil de suministro. Del mismo modo, asegúrese de que su identidad de firma de código coincida con el certificate que configuró en el portal y que está vinculado al perfil de suministro. Por último, select el perfil de aprovisionamiento adecuado de la list desplegable debajo de la identidad de firma del código.