2009-11-10 8 views
12

Hace poco trabajé para otra compañía y creé una aplicación para ellos. Mientras dividía el tiempo de desarrollo entre sus oficinas, usando sus computadoras y mi oficina, generé una clave y la firmé como parte de su "Equipo" de iPhone Dev Center.Resolución de la ambigüedad del certificado code-code con múltiples certificados de desarrollador

Ya tenía una cuenta existente de Dev Center y mi propio certificado de desarrollador. Después de importar el certificado para el proyecto del cliente, la firma de esa aplicación me da una advertencia de codesign de que encuentra varios certificados que coinciden con "iPhone Developer: Steve Madsen", pero elige el correcto y firma el binario.

Ahora estoy volviendo a uno de mis proyectos anteriores, utilizando mi propio certificado de desarrollador. Codesign me está diciendo que no puede resolver la ambigüedad entre mi certificado y la utilizada para mi cliente:

iPhone Desarrollador: Steve Madsen: ambigua (coincide con "iPhone Desarrollador: Steve Madsen (9E69FVL37K)" y "iPhone desarrollador Steve Madsen" en /Volumes/Users/steve/Library/Keychains/login.keychain)

el certificado de cliente es el que tiene (9E69FVL37K), que supongo que es como codesign es capaz de entender las cosas en mi proyecto del cliente

¿Cómo puedo configurar el proyecto Xcode para usar la identidad correcta? Escoger uno específico (no el selector de perfil automático) bajo la configuración de compilación de destino no ayuda.

Mejor aún, aunque Apple anticipó que un desarrollador podría ser miembro de múltiples equipos, no he encontrado documentación sobre cómo un desarrollador como yo debería configurar mi entorno. Generar una segunda clave/certificado parecía ser la única forma de hacer que esto funcionara, ya que los perfiles de aprovisionamiento deben estar asociados con los certificados en el Portal del programa de un equipo. ¿Alguien tiene buenos consejos sobre cómo hacer que este proceso funcione sin problemas?

+1

Elegir una identidad específica en lugar de la selección automática debería funcionar - lo hace por mí. – Till

+0

Ow, asegúrese de que la identidad seleccionada correctamente en ambos; las propiedades del proyecto, así como en las propiedades de destino! – Till

+0

Eso no hace la diferencia. El problema es que ambas claves tienen el mismo prefijo, y la clave que quiero usar es, en su totalidad, un prefijo de la segunda clave (trabajo del cliente). Codesign no tiene un modo para decir "la identidad es exactamente esto, no intentes ser inteligente". –

Respuesta

5

Me arriesgué esta noche y decidí revocar mi antiguo certificado y generar uno nuevo. Mi conjetura era correcta: Apple ahora está emitiendo todos los certificados con un sufijo (cadena hexadecimal).

Xcode es lo suficientemente inteligente como para hacer lo correcto. Seleccioné "iPhone Developer" (selección automática) en la configuración de destino. Determina cuál de mis claves se debe usar para firmar el binario en función del perfil de aprovisionamiento, luego le dice a codesign que use exactamente esa identidad incluyendo el sufijo (cadena-hexadecimal).

Mi apuesta es que los desarrolladores de iPhone más nuevos nunca verán este problema, ya que generaron su primer certificado después de que Apple comenzó a agregar el sufijo.

Un recordatorio para cualquier otra persona que tenga que hacer esto: también debe corregir todos sus perfiles de provisión existentes y volver a instalarlos.

0

He estado trabajando en 3 equipos hasta el momento y he estado usando 3 cuentas de iTunes distintas, una para cada una (por lo que tengo 3 direcciones de correo electrónico diferentes). Sé que esto no suena como la situación óptima, especialmente si estás trabajando en más equipos que eso.

Sin embargo, me pregunto si puede haber otra manera. Porque si puede asociar su cuenta de iTunes (usuario del centro de desarrollo de iPhone) con más de un equipo, ¿qué sucede cuando inicia sesión en el Dev Center? ¿Tienes múltiples opciones para ingresar a los múltiples "Portales de Progrma de desarrollador de iPhone"?

+1

eso es exactamente lo que está sucediendo: se le pregunta en qué equipo desea trabajar cuando ingresa. – Till

+0

Chicos, estas no son respuestas a mi pregunta. Los comentarios pertenecen arriba. –

+0

Steve, esta fue mi respuesta, mi forma de hacerlo durante un año sin ningún problema. "Hasta" gracias por dejarme saber que hay otra manera! – Dimitris

0

Gracias a Steve Madsen por señalarlo ... Apple ahora emite todos los certificados con un sufijo (HEXSTRING).Esto significa que si tiene un certificado para RUPERTO DE GUZMAN anteriormente, deberá REVOCAR este en PORTAL DE PROGRAMA -> CERTIFICADOS. Luego crea un NUEVO certificado. Su nuevo certificado ahora será RUPERTO DE GUZMAN (EZxxxxxxxx).

Ahora, codesign no se confundiría con los prefijos más porque tenemos:

ANTES:

RUPERTO DE GUZMAN

RUPERTO DE GUZMAN (89xxxxxxx)

DESPUÉS:

RUPERTO DE GUZMAN (EZxxxxxxx)

RUPERTO DE GUZMAN (89xxxxxxx)

Cuestiones relacionadas