Error de signo de código que no encuentra ID de equipo durante la construcción de ios Cordova

Después de leer todas las publicaciones anteriores sobre errores de señal de código, he llegado a un callejón sin salida. Al build un proyecto de cordova (versión 4.3.0) con plataforma ios (versión 3.8.0) y usar un server Bamboo para realizar la continuous integration. No puedo hacer que mi aplicación firme la aplicación de iOS para el lanzamiento. Este es el order de mis tareas de compilation:

  1. desbloquear llavero (me he asegurado de que los certificates de desarrollo y distribución de mi iPhone fueran válidos y no caducados. También me aseguré de que no haya windows de permissions que aparezcan en el server de Bamboo, p. ej. pidiendo permiso para desbloquear llaveros).
  2. La plataforma cordova elimina ios (para limpiar el directory y comenzar de nuevo)
  3. agregar complementos para ios
  4. cordova platform add ios
  5. cordova build ios –release –device (versión de compilation para que un dispositivo pueda cargarse en la tienda de aplicaciones)
  6. xcrun para incrustar la movileprovision

Luego obtengo este error cuando ejecuto la tarea # 5 anterior:

=== BUILD TARGET Abczyx OF PROJECT Abczyx WITH CONFIGURATION Release === Check dependencies Code Sign error: No code signing identities found: No valid signing identities (ie certificate and private key pair) matching the team ID “(null)” were found. CodeSign error: code signing is requinetworking for product type 'Application' in SDK 'iOS 8.1' The following build commands failed: Check dependencies (1 failure) Error code 65 for command: xcodebuild with args: -xcconfig,/usr/local/Bamboo/Abczyx/platforms/ios/cordova/build-debug.xcconfig,-project,Abczyx.xcodeproj,ARCHS=armv7 armv7s arm64,-target,Abczyx,-configuration,Release,-sdk,iphoneos,build,VALID_ARCHS=armv7 armv7s arm64,CONFIGURATION_BUILD_DIR=/usr/local/Bamboo/Abczyx/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/usr/local/Bamboo/Abczyx/platforms/ios/build/shanetworkingpch ERROR building one of the platforms: Error: /usr/local/Bamboo/Abczyx/platforms/ios/cordova/build: Command failed with exit code 2 

Aquí está mi build-release.xcconfig :

  #include "build.xcconfig" CODE_SIGN_IDENTITY = iPhone Distribution CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution #include "build-extras.xcconfig" 

Aquí está mi build.xcconfig :

  // Type of signing identity used for codesigning, resolves to first match of given type. // "iPhone Developer": Development builds (default, local only; iOS Development certificate) or "iPhone Distribution": Distribution builds (Adhoc/In-House/AppStore; iOS Distribution certificate) CODE_SIGN_IDENTITY = iPhone Developer CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer // (CB-7872) Solution for XCode 6.1 signing errors related to resource envelope format deprecation CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist 

El server Bamboo está ejecutando Xcode 6.1.1 Build versión 6A2008a en un OS X 10.9.4. Y hice clic en actualizar para las preferences de xcode> Cuentas> usuario> Firmar Identidades y Provisión de perfiles de pantalla.

Estoy usando Xcode 6.2, compilation versión 6C131e en un OS X 10.9.4 mac book pro para mi máquina local y sigo recibiendo este mismo error. Sin embargo, una de las cosas extrañas es que en mi máquina local, a veces ejecuto cordova build ios --device --release sin el indicador --release y puedo crear una .ipa en mi carpeta de plataforms / ios / build / device que está firmado para la debugging, pero esto no funciona en el server remoto de Bamboo (aunque funcionó una vez hace muchos días).

He estudiado las releasenotes para Cordova iOS v.3.8.0 aquí y no encontré nada útil para probar más allá de CB-7872 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist , que ya se ha solucionado: https://github.com/ apache / cordova-ios / blob / master / RELEASENOTES.md

He verificado que el server de Bamboo contiene el sdk iphoneos8.1 que está comprobando.

He verificado que las provisiones de perfil están actualizadas y que nadie más ha trabajado en mi repository.

He verificado que mi CODE_SIGN_IDENTITY es bueno con esta publicación y secuencia de commands: Xcode falla con el error de "firma de código"

He intentado agregar una demora después de la construcción, pero ya no consigo el paso de compilation antes de que pueda intentar esto: Error al generar la compilation de versión de la aplicación Cordova iOS

He intentado ver la eliminación de la característica de esquemas de autocomplete / administrar, pero no estoy seguro de si este es solo otro agujero de conejo para caer: xcodebuild dice que no contiene esquema

He intentado ver el origen aquí: https://github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/lib/build.js Pero no veo nada obvio para confirmar o probar …

Dos preguntas:

  1. ¿Por qué hay un "nulo" para ID de equipo? ¿Cómo puedo verificar dónde está comprobando?

  2. ¿Qué más me falta? ¿Qué más puedo comprobar? Específicamente en la fuente de cordova build ios script?

TL; DR

  1. ¿Por qué hay un "nulo" para ID de equipo? ¿Cómo puedo verificar dónde está comprobando?

Probablemente la configuration incorrecta de llavero para la distribución de iPhone. Verifique y asegúrese de tener el certificate con la key anidada.

  1. ¿Qué más me falta? ¿Qué más puedo comprobar? Específicamente en la fuente de cordova build ios script?

Asegúrese de que las banderas y las opciones adecuadas se configuran si usa herramientas de command-line. De lo contrario, testing diferentes herramientas de envoltura como la gem Fastlane ruby.

Versión larga

Lo descubrimos usando una herramienta de envoltura alnetworkingedor de la console de desarrollo de Apple y la firma de código y asegurándose de que el file p12 (key cert +) se configuró correctamente.

  1. Instale la joya Fastlane de KrauseFx: https://github.com/KrauseFx/fastlane
  2. Exporte el file p12 de distribución de iPhone desde Keychain Access desde nuestro server de compilation Bamboo a una computadora local (para una solución de problemas más fácil). El file p12 básicamente incluye un certificate con un icono de key anidada, que es necesario como Rich Tolley mencionado anteriormente en los comentarios.
  3. Haga doble clic en el file p12 para instalarlo en el llavero "login". Asegúrese de que puede ver la estructura de keys cert anidadas.
  4. Abra Xcode> Preferences y asegúrese de que se agregue iOS Distribution como parte de las Identidades de firma (se muestra tanto el Desarrollo de iOS como la Distribución de iOS)
  5. Limpie su directory de córdoba / proyecto comenzando de nuevo (sin plataforms ni complementos ni utilizando la cordova platform rm ios etc.). Luego agregue los complementos, luego agregue las plataforms.
  6. cordova build ios --device --release , que construye nuestra "Abczy.app".
  7. Vaya al directory correcto de las plataforms de cordova ya que la ruta relativa puede no funcionar correctamente: ~ /…/ platforms / ios / build / device (verifique que el file .app esté allí)
  8. Ejecute este command para convertir .app en una .ipa : xcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop (he movido la .ipa resultante en mi escritorio para que sea más fácil de manipular) .
  9. Vaya a la carpeta que contiene su .ipa y asegúrese de tener el file mobileprovision del desarrollador de Apple incluido en el mismo directory.
  10. Ejecutar: sigh resign ./Abczyx.ipa -p "Abczyx-dist.mobileprovision" . Copie y pegue el nombre de la key / cert que usará y luego firmará la aplicación con la distribución mobileprovision. Si usa un desarrollador mobileprovision, obtendrá un error fatal, pero la aplicación se firmará de todos modos.
  11. Alternativamente, puede escribir: sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"