ios xcode ios8 xcode6 ios-app-extension

ios - Xcode6: el binario incorporado no está firmado con el mismo certificado que la aplicación principal



ios8 ios-app-extension (28)

Después de agregar Today App Extension Target, me resulta imposible compilar el proyecto. a continuación hay un error:

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target''s code sign settings match the parent app''s.

Certificado de firma binario incorporado: Desarrollador de iPhone: (Nombre del desarrollador) (número)

Certificado de firma de la aplicación principal: Desarrollador de iPhone: (Nombre del desarrollador) (número)

pero el certificado binario incorporado y el certificado de la aplicación principal son los mismos. Así que ahora soy confuso ...


Abra KeyChain Access en su Mac, elimine el otro certificado que sea diferente de su propio certificado. Este problema apareció en general después de iniciar sesión en otra cuenta en su Xcode.


Abra su cadena clave y es la Autoridad de Certificación de Relaciones con Desarrolladores de Apple en todo el mundo , si elijo siempre confiar , los archivos Xcode fallaron. Cuando cambié a los valores predeterminados del sistema, Xcode archivó con éxito. ¡Sí, lo disfrutarás!


Cuando tuve este problema, fui al Centro de miembros de Apple y me di cuenta de que el Perfil de aprovisionamiento (para la extensión) que había creado estaba marcado como ''No válido''. Acabo de volver a crear el perfil de aprovisionamiento con el mismo certificado con el que está firmada la aplicación y luego lo descargué a través de Xcode> Preferencias> Cuenta> actualizar.

Una vez que tuve los nuevos perfiles de aprovisionamiento, los seleccioné en la configuración de compilación. Seleccioné el perfil de aprovisionamiento que acaba de crear y también seleccioné el certificado correspondiente en la entidad de firma de Código en la configuración de compilación y eso solucionó el problema.

Tenga en cuenta que la extensión tiene su propia identificación de aplicación y, por lo tanto, su propio perfil de aprovisionamiento.


Debe crear un perfil de aprovisionamiento para ese objetivo y asegurarse de incluir el mismo certificado.

Los objetivos tienen su propio ID de paquete. También necesitará crear un AppId. Esto resolvió el mismo problema que tienes

mejor


Después de todo un día resulta que la " Autoridad de Certificación de Relaciones con Desarrolladores de Apple en todo el mundo " en los Root Certs había sido eliminada . Exporto uno de otra máquina e instalado, todo funciona bien.


En caso de que esto ayude a alguien, mi solución fue que había actualizado mi esquema de archivo para su lanzamiento al enviarlo a la tienda, pero nunca lo volví a cambiar a ad hoc para realizar pruebas. Edición de mi esquema de archivo para utilizar ad hoc trabajado.


En el caso de usar WatchKit, asegúrese de que su aplicación Watch tenga seleccionado el "Equipo" correcto en la configuración de Target de la aplicación Watch (en General> Firma> Equipo). Había configurado el equipo de la aplicación del teléfono, pero no el equipo de la aplicación del reloj.


En mi caso, el perfil que usa mi objetivo de extensión contiene diferentes certificados que el perfil que usa el objetivo principal. ¡Este fue exactamente el mensaje de error del que se quejó!

El motivo fue que generé un nuevo certificado para el perfil de extensión.

Inicie sesión en developer.apple.com para ver si estos perfiles contienen un certificado diferente.


En mi caso, mi aplicación y mi perfil de Widget se firmaron con un certificado diferente. Así que tuve que ir al sitio para desarrolladores de iOS, seleccionar el perfil de aprovisionamiento de la aplicación principal-> Editar y elegir el mismo certificado que el widget. Luego haga clic en "generar" y "descargar". Una vez que lo haya descargado, haga doble clic en él para instalarlo en XCode. Luego, seleccione el nuevo perfil de aprovisionamiento para su aplicación principal en Configuración de compilación-> Provisionig Profile. ¡Finalmente reconstruye tu proyecto!


Este problema podría surgir en el caso de que la aplicación incrustada se dirija como extensiones o watchapp no ​​tiene el equipo correspondiente seleccionado en la sección General , como la aplicación principal de iOS.

Seleccionar el equipo adecuado para todos los objetivos relevantes solucionó el problema para mí.


Hay bastantes razones por las cuales el problema puede emanar. Si ninguna de las otras respuestas funciona para usted, me gustaría agregar otro cheque plausible que me ayudó. Asegúrese de que el certificado con el que está firmando no tenga ''Confiar siempre'' (verá un signo verde ''+'' si la configuración es tal).

  1. Vaya a Acceso a la cadena clave, haga doble clic en el certificado que está utilizando.
  2. Expanda el menú desplegable ''Confiar'' y cambie / establezca ''Usar valores predeterminados del sistema'' desde ''Confiar siempre''.

Es especialmente cierto si está utilizando Swift en su proyecto ya que la configuración ''Confiar siempre'' rompe las bibliotecas pertinentes de Swift.


La actualización de mis perfiles de aprovisionamiento lo arregló por mí (Preferencias -> Cuentas -> Toque dos veces la cuenta -> toque el botón Actualizar en la esquina inferior izquierda)


Lo resolví eliminando mi cuenta de ID de Apple en

Preferences -> Accounts

y luego volver a iniciar sesión con mi ID de Apple


Para mí esto estaba sucediendo porque algunos de mis perfiles de aprovisionamiento caducaron. Creé nuevos perfiles en developer.apple.com, eliminé los antiguos, los configuré en Automático en Xcode y el error desapareció.


Por alguna razón, mi certificado de desarrollador se almacenó en mi llavero dos veces. Eliminar uno de ellos solucionó el problema.


Si está utilizando alguna extensión (en mi caso, estaba usando OneSignal Extension) en ese caso, el paquete de la aplicación principal será com.app.xyz, pero para la extensión / widget, su ID de paquete sería com.app.xyz.extension

Por lo tanto, crearemos una identificación de aplicación con el identificador de paquete com.app.xyz.extension y crearemos perfiles de aprovisionamiento para esta identificación de aplicación.

Usaríamos los mismos certificados de desarrollo y producción que usamos para la aplicación principal.

Aquí hay un enlace que puede ser útil para el perfil de aprovisionamiento de un widget

Finalmente no estoy usando la configuración automática. Así que configuro mis perfiles de aprovisionamiento y certificados manualmente


Si su Xcode ha funcionado bien pero dejó de funcionar después de agregar un objetivo de extensión a su proyecto, la mayoría de las veces es que su aplicación se firmó con un certificado anterior (aún válido con su nombre, etc.), mientras que su extensión se firma con Un nuevo certificado con derecho a la extensión. Por eso es que el error. En este caso, lo más probable es que tenga dos certificados con el mismo nombre, y esto es lo que puede hacer:
1.Go to Xcode->Preference; 2. Seleccione la pestaña Cuentas;
3. Seleccione su ID de Apple y luego haga clic en Ver detalles;
4. En la ventana Firmar lista de identidades, seleccione Desarrollo IOS, luego haga clic en el pequeño icono de Configuración y seleccione Revocar;
5. Xcode intentará descargar un nuevo certificado.
Puede realizar una compilación limpia después de esto, de modo que tanto su aplicación como su extensión se firmarán con el nuevo certificado.



También enfrenté el mismo problema, lo resolví mediante el procedimiento de la siguiente manera:

Primero, creo un certificado de desarrollo de mi equipo (porque renovamos nuestro certificado raíz)

2. Edite el certificado de desarrollo de aplicaciones de iPhone, asegúrese de incluir el certificado que acaba de crear.

3 、 haciendo lo mismo con la aplicación watchkit extension And watch kit

4 、 vaya a su "Preferencia" de Xocde, haga doble clic en su "Nombre del equipo", elimine el antiguo Certificado de Iphone 、 watchApps 、 watchExtention

5. Descargue su nuevo certificado e instálelo.

Entonces funciona.


Traté de ejecutar el proyecto en iPhone5, pero App Extension no es compatible con la arquitectura de 32 bits. ¡Así que cuando construyo un proyecto en iPhone5S, puedo construir el proyecto!


Tuve discrepancias en la firma de código. Mi extensión y la aplicación principal tenían diferentes certificados seleccionados. Una vez que configuré ambos para usar distribución, funcionó bien.


Tuve el mismo problema con una aplicación en Xcode 7.1. La aplicación tenía una extensión Watch y, por lo tanto, un grupo de aplicaciones. Lo que funcionó para mí fue:

  1. Vaya a ~/Library/MobileDevice/Provisioning Profiles
  2. Eliminar todos los perfiles de aprovisionamiento enumerados allí
  3. Vaya al Centro de desarrollo de iOS en Safari y regenere todos los perfiles de aprovisionamiento
  4. Regrese a Xcode => Preferencias => ID de Apple y elija la ID de Apple asociada con la aplicación
  5. Haga clic en "Ver detalles ..." (abajo a la derecha)
  6. Descargue los perfiles de aprovisionamiento que se acaban de crear
  7. Limpiar y construir de nuevo

Creo que mis perfiles de aprovisionamiento se confundieron porque estaba usando la función "corregir automáticamente" de Xcode para otro problema que tuve con Capabilities => Associated Domains.


Tuve el mismo problema en Xcode 6, pero en mi caso ocurrió debido a que tenía dos certificados de desarrollador activos. La revocación de uno había solucionado el problema.


Tuve el mismo problema.

Así que hice un perfil de aprovisionamiento para cada ID de paquete y configuración de la aplicación WatchKit:

  • Ver desarrollo de aplicaciones
  • Ver desarrollo de extensiones

  • Ver producción de aplicaciones

  • Ver producto de extensión

/! / Tenga cuidado porque la ID de la aplicación de reloj en el portal del desarrollador es algo así como:

com.example.projectname.watchkitapp.watchkitextension

y cuando creé la aplicación watchkit, la ID del paquete en Xcode era:

com.example.projectname.watchkitapp

tal vez sea algo que cambió desde WatchOS 2.0.


Tuve que ir a:

Xcode-> preferencias -> Cuentas -> Ver detalles -> seleccione todos los perfiles de aprovisionamiento -> presione la tecla DEL en el teclado después de que se complete la eliminación, presione el botón Descargar todo!


Tuve que seleccionar mi aplicación en ''Objetivos'', luego ir a la pestaña ''Capacidades'' y hacer clic en ''Solucionar problemas'' en la sección ''Grupos de aplicaciones''


Tuve un problema similar. Para mí, el problema era que el certificado mostraba "firmado por una autoridad desconocida". Había seguido los pasos a continuación y está resuelto. El problema era la falta del certificado intermedio WWDR de Apple

También debemos instalar el certificado intermedio WWDR emitido por las relaciones mundiales de desarrolladores de Apple. Se puede descargar desde el portal o directamente en http://developer.apple.com/certificationauthority/AppleWWDRCA.cer Asegúrese de agregar esto también a su llavero.

Para agregar el certificado: abra el software de la utilidad de llavero en su computadora Mac, luego vaya a Archivo → Importar elementos, luego seleccione AppleWWDRCA.cer.


Para Xcode 8 beta 3

Mis números de compilación estaban desactivados en mis diferentes objetivos en mi archivo de proyecto Xcode.

Mi objetivo de iOS tenía una versión de compilación 3, pero mi objetivo de aplicación de reloj y mi objetivo de extensión de compartir tenían la versión de compilación 1.

Todo lo que hice fue unir todos los números de compilación de los objetivos (los cambió a 3) y solucionó el problema.

Espero que esto ayude.