Xcode 6: ¿cómo elegir un certificado de firma / perfil de aprovisionamiento para la distribución Ad-Hoc?

Para distribuir la aplicación a nuestros evaluadores usamos Xcode, lo cual hacemos usando el siguiente proceso:

  • Aplicación de archivo
  • Distribuir para Ad-Hoc
  • Elija el perfil de aprovisionamiento
  • Guarde el .ipa en una carpeta

Pero con Xcode 6 , este flujo de trabajo se modificó un poco. Todavía puedo seleccionar la opción de distribución Ad-Hoc, pero no puedo seleccionar el perfil de aprovisionamiento que deseo. Esto no nos da control sobre qué certificado de firma se utiliza y la configuración del perfil de aprovisionamiento (usamos notificaciones push).

De forma predeterminada, se utiliza la identidad de firma de iPhone distribution y se genera algún tipo de perfil de aprovisionamiento XC Ad Hoc , que se puede ver en la imagen a continuación: Exportando IPA Si hace clic en la flecha cerca del perfil de aprovisionamiento, abre la carpeta con perfiles de aprovisionamiento.

Entonces mi pregunta es:

¿Hay alguna forma en Xcode 6 para seleccionar el perfil de aprovisionamiento utilizado con la distribución Ad Hoc?

¡Gracias!

Estaba enfrentando el mismo problema, resuelto usando la secuencia de comandos de la herramienta “xcodebuild”, que está preinstalado con XCode6 (no fue necesario volver a instalar XCode5).

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

Script en la terminal:

 xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile 'Provisioning Profile Name' 

Tuve un problema similar al enviar a The App Store. Creé un archivo, luego hice clic en “enviar” y Xcode quería firmar automáticamente con el perfil predeterminado de aprovisionamiento de comodines “XC com. *” En lugar del perfil explícito que ya tenía.

Para arreglar esto, acabo de volver a generar el perfil en el Portal de Desarrolladores de Apple:

1) Vaya a developer.apple.com y encuentre el perfil de suministro de distribución que desea usar.
2) Selecciónelo, haga clic en “Editar”, cambie el nombre del perfil y haga clic en “Generar”.
3) Descargue el perfil de aprovisionamiento en el Escritorio y arrástrelo al icono de Xcode 6.
4) Reinicia Xcode 6.
5) Abra la ventana del organizador y haga clic en “Enviar” en el archivo que creó. Xcode seleccionará automáticamente su perfil explícito en lugar del genérico.

Una vez que estás en el Organizador

  • Seleccione la comstackción ad-hoc y haga clic en “Exportar ….”
  • Seleccione “Guardar para una implementación ad hoc” -> Siguiente
  • En lugar de seleccionar una organización del menú desplegable, seleccione “Usar activo de firma local” -> Elegir
  • Exporta y guarda .ipa como antes.

Por supuesto, debe haber generado, descargado e instalado el perfil de aprovisionamiento ad-hoc.

Parece que el último perfil de aprovisionamiento generado gana en este momento. De modo que puede volver a generar el perfil que desea y descargarlo, y Xcode lo usará.

Un enfoque ligeramente mejor: configure el perfil prov deseado en su objective y use la línea de comando para construir su ipa, eso también funciona.

Aquí está el guión, estoy usando:

 #!/bin/sh # Current as working as of 2014/09/22 # Xcode 6 OUTPUTDIR="$HOME/build" APPNAME="your-app" SCHEME="your-app" APP_WORKSPACE="$HOME/Path/To/your-app.xcworkspace" rm "$OUTPUTDIR/$APPNAME.ipa" #deletes previous ipa xcodebuild -workspace "$APP_WORKSPACE" -scheme "$SCHEME" archive -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" xcodebuild -exportArchive -exportFormat ipa -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" -exportPath "$OUTPUTDIR/$APPNAME.ipa" 

y mi configuración:

Configuración de Xcode

Tampoco pude resolver esto, lo conseguí al enviarlo a la AppStore, donde entró de forma predeterminada en un perfil de comodín.

Terminé construyendo en Xcode 6, luego volviendo a la ventana Organizador de Xcode 5 para el envío. De esta forma, le pedirá que elija un perfil para firmar.

En Xcode 6 (al menos 6.1 estoy usando ahora) cuando está haciendo la exportación para ad hoc, xcode 6 escaneará automáticamente si hay algún perfil de provisión que contenga todos los dispositivos registrados en la cuenta de desarrollador y al mismo tiempo coincida con la identificación del paquete . Si no, usará el perfil de provisión XC. Por lo tanto, si desea utilizar su propio perfil, por ejemplo, para notificaciones automáticas, deberá seleccionar todos los dispositivos en su perfil en el portal para desarrolladores de Apple. Supongo que esa es la razón por la que algunas personas recrean el perfil y otros no.

Por cierto, use script puede exportar y cargar a testflight, pero el dispositivo simplemente no puede descargarlo. Probablemente en algún lugar me equivoqué. si alguien sabe por qué es, por favor hágamelo saber. tks

Esto funcionó para mí:

  1. haga clic en “Ver cuentas …” en el cuadro de diálogo “… seleccionar un equipo de desarrollo …”.
  2. haga clic en “Ver detalles …” y encuentre el perfil de aprovisionamiento XC Ad Hoc.
  3. Haga clic derecho en ese perfil y elija “Mostrar en el buscador”.
  4. eliminar el perfil seleccionado.
  5. regrese al diálogo en el paso 1.
  6. haga clic en “Elegir”.
  7. haga clic en la flecha cerca del perfil de aprovisionamiento para abrir el directorio de perfiles de suministro.
  8. eliminar de nuevo el perfil genérico como en el paso 4.
  9. haga clic en el botón “Anterior” del cuadro de diálogo “Enviar [nombre de la aplicación] a Apple:”.
  10. seleccione de nuevo “Guardar para una implementación ad hoc”
  11. haga clic de nuevo en el botón “elegir”.

ahora debería ver el nombre del perfil de aprovisionamiento correcto.

Tengo una solución para esto que funciona para mí.

Tengo ambos Xcode 6 y Xcode 5.1.1 instalados, Xcode 6 está en Aplicaciones y Xcode 5.1.1 está en otro directorio. Cuando quiero hacer una construcción, uso Xcode 6 para crear el archivo. Pero también puedes ver el archivo creado en Xcode 5.1.1, así que utilizo Xcode 5.1.1 para distribuir Ad Hoc .ipa usando el perfil de aprovisionamiento que quiero usar. Así que construye usando Xcode 6 pero distribuye usando Xcode 5.1.1.

El uso de activos de firma locales durante la exportación resolvió el problema para mí: enter image description here

La respuesta de @MrPatol no funcionó para mí. Mi escenario de trabajo para Xcode 6.3.2

En Member Center -> Perfiles de aprovisionamiento de iOS

  • Eliminar el perfil de aprovisionamiento que se configuró de forma predeterminada cuando intentabas crear la aplicación (por ejemplo, “XC …”). Cree un perfil de aprovisionamiento ad-hoc (no de producción) con un nombre corto.

En la Utilidad de configuración de iPhone -> Perfiles de provisión

  • Eliminar el mismo perfil de aprovisionamiento (por ejemplo, “XC …”)

En Xcode -> Organizador

  • Seleccione la comstackción ad-hoc y haga clic en “Exportar ….” Seleccione “Guardar para una implementación Ad Hoc” -> Siguiente
  • Seleccione una organización del menú desplegable
  • Verifique que su nuevo perfil de aprovisionamiento ad-hoc se seleccione automáticamente
  • Exporta y guarda .ipa como antes.

Aquí están los dos puntos clave que resolvieron el problema para mí.

  • Cuando genera el perfil de suministro, debe estar vinculado a un ID de aplicación explícita que utilice el mismo identificador de paquete que su aplicación. Una ID de aplicación comodín no funcionará.
  • Cuando exporte la aplicación para una implementación ad-hoc, seleccione Usar activo de firma local en el menú desplegable y haga clic en Elegir.

Xcode buscará el perfil de aprovisionamiento correcto haciendo coincidir la ID de la aplicación con el identificador del paquete de la aplicación.

De hecho, debe crear un nuevo perfil de Distribución, específico para la Implementación Ad Hoc. Esto se puede encontrar en el centro de miembros clásico, pero es un nuevo tipo de certificado.

A continuación, puede seleccionar qué dispositivos se pueden usar para probar la aplicación como lo haría con un perfil de desarrollador.

Y el certificado recién creado estará disponible cuando exporte su paquete desde el Organizador de la forma habitual.

Alternativamente, puede utilizar la solución TestFlight proporcionada por Apple con iOS 8 para permitir que su usuario tenga acceso a la presentación preliminar.

enter image description here

Tuve el mismo problema, finalmente lo resolví regenerando el perfil que quería usar en Xcode 6, incluidos todos los dispositivos que he registrado en mi cuenta de desarrollo iOS, de esta forma, al seleccionar Exportar, muestra el perfil correcto y puede exportar Ad Hoc con Xcode 6 sin usar una secuencia de comandos. Espero eso ayude.

Estuve atascado un tiempo con esto, pero usando Crashlytics lo resolvió, comstackmos distribuido usando el perfil seleccionado en la configuración de comstackción de tu proyecto de Xcode.

Espero que ayude a alguien.

Casi el mismo problema. Después de crear un archivo para la distribución (Producto> Archivo), exporta el archivo (haz clic en Exportar …) y elige “Guardar para la implementación Enterprise”; luego “Siguiente”. A continuación, selecciona el valor predeterminado “Equipo de desarrollo” (por ejemplo, el nombre de la organización) y hace clic en “Elegir”. Finalmente, se le presentará una vista de resumen que también enumera el perfil de aprovisionamiento que Xcode ha encontrado automáticamente (tal vez creado sobre la marcha) para usted. Este PODRÍA ser el perfil de aprovisionamiento incorrecto (normalmente un perfil de aprovisionamiento comodín, como “XC: *”) y PODRÍA estar sucediendo porque ya hay un perfil de aprovisionamiento de comodines en el portal del desarrollador. El perfil de aprovisionamiento de comodines PUEDE ser utilizado por otro proyecto anterior y tal vez no sea aconsejable eliminar el perfil de aprovisionamiento de comodines del portal de desarrolladores.

Usé un ticket de soporte para esto y solo obtuve este enlace de nuevo https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html#//apple_ref/doc/uid/TP40012582 -CH32-SW1 . No es realmente una gran ayuda.

Descubrí que la solución de MrPatol también funciona para Enterprise Deployment y nos soluciona el problema. Primero inicié sesión en el portal para desarrolladores y creé manualmente un perfil de aprovisionamiento adecuado para mi aplicación. Luego descargué e instalé el nuevo perfil de aprovisionamiento creado manualmente.

En xcode 7, no podría ser capaz de elegir adhoc provisioning a través de

Organizador -> Subir a App Store y Organizador -> Validar

Pero podría elegir a través de Organizador -> Exportar

Editado:

Cargar la aplicación después de exportar para un adhoc a la tienda de aplicaciones para testFlight causó otro problema discutido aquí . Entonces, la solución a ambos estos problemas es uno. Cree el aprovisionamiento de AppStore para poder elegirlo a través del organizador y utilizar testFlight subiéndolo a la tienda de aplicaciones.

  1. Creo que es una forma correcta de especificar una opción -exportOptionsPlist después de Xcode 7. Elegirá los archivos de provisión correctos, como en la exportación de la GUI, independientemente de lo que especifique en la configuración del proyecto.

xcodebuild -exportArchive -archivePath $ Archive_Path -exportPath $ LOCAL_PACKAGE_DIR -exportOptionsPlist $ Export_Plist_Path

El archivo optionPlist es así,

  teamID MYTEAMID123  teamID  app-store uploadSymbols    

App-store, enterprise, ad-hoc, development son alternativas

  1. Pero puede encontrarse con otro error después de arriba.

Error Domain = IDEDistributionErrorDomain Code = 14 “No se encontraron dispositivos aplicables”. UserInfo = {NSLocalizedDescription = No se encontraron dispositivos aplicables.}

Es un problema de Ruby. Pruebe este script de shell, xcbuild-safe.sh

 xcbuild-safe.sh xxxxNormalOptionsInXcodebuild bla... 
  1. Espere un momento, llega otro error extraño.

xcbuild-safe.sh: línea 62: shell_session_update: comando no encontrado

¿Qué diablos es shell_session_update ? Déjanos trabajar alrededor de eso. Simplemente defina una función antes del cmd de xcodebuild real, concretamente en la línea 60 o 61.

 function shell_session_update() { :; } 

En respuesta a su pregunta específica, no, no hay forma de seleccionar el perfil de aprovisionamiento que se utilizará. ¿Qué estás tratando de hacer? (es decir, ¿qué significa que el perfil que desea seleccionar permite que el perfil generado automáticamente no lo haga?)