Después de actualizar a xcode 9, la aplicación cordova no se comstackrá, error 70, requiere perfil de aprovisionamiento

Ayer pasamos de xcode 8.3.2 a la versión 9. Y ahora nuestra distribución empresarial apache cordova ios se niega a comstackr.

2017-09-21 07:37:16.787 xcodebuild[70400:217569] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/wj/yj3cfvh954gbc_btlhcrcx7nk7t4dj/T/App Name_2017-09-21_07-37-16.786.xcdistributionlogs'. 2017-09-21 07:37:16.938 xcodebuild[70400:217569] [MT] IDEDistribution: Step failed: : Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=( "Error Domain=IDEProvisioningErrorDomain Code=9 \"\"App Name.app\" requires a provisioning profile.\" UserInfo={NSLocalizedDescription=\"App Name.app\" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}" )} error: exportArchive: "App Name.app" requires a provisioning profile. Error Domain=IDEProvisioningErrorDomain Code=9 ""App Name.app" requires a provisioning profile." UserInfo={NSLocalizedDescription="App Name.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.} ** EXPORT FAILED ** Error: Error code 70 for command: xcodebuild with args: -exportArchive,-archivePath,App Name.xcarchive,-exportOptionsPlist,/Users/Shared/Workspace/github/AppName/platforms/ios/exportOptions.plist,-exportPath,/Users/Shared/Workspace/github/AppName/platforms/ios/build/device 

(Reemplacé el nombre de la aplicación con “Nombre de la aplicación” para esta pregunta)

He verificado que todos los certs y los perfiles de aprovisionamiento están establecidos en xcode. Y build.json está configurado. No soy realmente un chico Mac y estoy perplejo sobre qué hacer a continuación.

-Editar, degradando xcode a 8.3.3 solucionó el problema. No es una solución ideal, pero no puedo hacer mucho.

Si especifica su perfil de aprovisionamiento explícitamente, como yo. Me gusta esto en tu Cordova build.json:

 "ios": { "debug": { "codeSignIdentitiy": "iPhone Developer", "developmentTeam":"MYTEAMID", "packageType": "developer", "iCloudContainerEnvironment": "Development" }, "release": { "codeSignIdentitiy": "iPhone Distribution", "developmentTeam":"MYTEAMID", "provisioningProfile": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "packageType": "ad-hoc", "iCloudContainerEnvironment": "Production" } } 

Tenga en cuenta que iCloudContainerEnvironment = Production / Development solo es necesario si usa notificaciones push

Debe establecer explícitamente la firma manual y proporcionar las claves de aprovisionamiento en ExportOptions.plist que genera Cordova. Desafortunadamente, Córdova no está generando todas las claves requeridas.

Esto es lo que necesita para verse, al menos para mí:

     compileBitcode  method ad-hoc iCloudContainerEnvironment Production provisioningProfiles  my.bundle.idenifier My Provisioning Profile Name  signingCertificate iPhone Distribution signingStyle manual stripSwiftSymbols  teamID YOURTEAMID thinning <none>   

El archivo que Cordova genera @ cordova / app / platforms / ios / exportOptions.plist tiene el siguiente aspecto:

     compileBitcode  method development teamID MYTEAMID   

note que le faltan los bits importantes que requiere Xcode 9.

Genere el archivo correcto archivando la comstackción manualmente, y luego exportándola, que también crea exportOptions.plist que ahora uso como referencia.

Después de profundizar, descubrí que esto no se puede solucionar después de ejecutar “Cordova add platform iOS”, porque se genera dinámicamente durante la fase de comstackción. Decidí bifurcar el repo de Cordova-ios y enviar una solicitud de extracción. Puede usar mi tenedor directamente, o esperar hasta que la solicitud de extracción se fusione.

Solicitud de extracción https://github.com/apache/cordova-ios/pull/338/commits

Tenedor https://github.com/jrryhrtn/cordova-ios

Notas de uso de la solicitud de extracción

Consulte el siguiente ejemplo, tenga en cuenta que el perfil de aprovisionamiento puede ser el nombre o el UUID del perfil. Se prefiere el nombre para el mantenimiento, ya que el UUID cambia cada vez para regenerar el perfil.

 { "ios": { "debug": { "codeSignIdentity": "iPhone Developer", "developmentTeam":"YOURTEAMID", "provisioningProfile": "provisioning profile name or UUID", "packageType": "development" }, "release": { "codeSignIdentity": "iPhone Distribution", "developmentTeam":"YOURTEAMID", "provisioningProfile": "provisioning profile name or UUID", "packageType": "ad-hoc" } } } 

Planeo hacer parches manualmente hasta que la solución / a se fusione en la próxima versión de Cordova. Tendrá que regenerar su plataforma iOS después del parche a través de “Cordova platform rm iOS” y luego “Cordova platform add ~ / forks / cordova-ios”. ~ / forks / cordova-ios mi ruta local, usa la ruta en tu máquina local donde descargaste el repo de Cordova-ios refo.

Actualizar

cordova-ios 4.5.2 ha sido lanzado oficialmente! Actualice ejecutando los siguientes comandos: “cordova platform rm ios”, y luego “cordova platform add ios@4.5.2”

¡Aclamaciones!

Mientras se recibe ayuda y no quiere usar Xcode directamente (y no lo juzgo 😉) … aquí hay una solución temporal que funcionó bien para mí:

eliminar ios

 cordova platform rm ios 

agrega ios del brunch dev donde este problema ya se ha solucionado . (Más tarde podrás usar ios v4.6.0 o lo que sea el número final)

 cordova platform add https://github.com/apache/cordova-ios.git 

¡Espero que te ayude también! 🙂