Error de Xcode 6.1 al comstackr IPA

Acabo de actualizar a Xcode 6.1 hoy, y adivine qué: ahora estoy teniendo problemas para enviar comstackciones usando la aplicación de escritorio TestFlight. Aquí está el error que recibo mientras la aplicación comienza a construir el IPA:

El error

error: / usr / bin / codesign –force –preserve-metadata = identificador, autorizaciones, reglas de recursos –sign 854059d45eed724593debef577a562e1ba96ab55 –resource-rules = / tmp / QYFSJIvu7W / Payload / XX.app / ResourceRules.plist / tmp /QYFSJIvu7W/Payload/XX.app ha fallado con el error 1. Salida: Advertencia: uso de –preserve-metadata con la opción “resource-rules” (obsoleto en Mac OS X> = 10.10). Advertencia: –resource-rules ha quedado en desuso en Mac OS X> = 10.10! /tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist: no se pueden leer los recursos

El ‘Artículo de Ayuda’ no tiene idea de lo que está pasando.

No parece ser un problema de TestFlight porque sucede lo mismo en un entorno de CI como Jenkins que usa xcrun o herramientas similares.

La aplicación no se actualizó durante meses, por lo que sé que no debería esperar ninguna actualización para arreglar esto pronto. Solía ​​funcionar muy bien para mí y para mis clientes, así que no estoy dispuesto a abandonarlo por otra cosa tampoco.

Cualquier idea sobre de qué se trata este error, y cómo solucionarlo sería muy apreciada.

Desearía saber por qué funciona, pero aquí hay una solución que funcionó para mí:

¡Encontré la solución!

Haga clic en su proyecto> Objetivos> Seleccione su destino> Configuraciones de comstackción>

Code Signing Resource Rules Path

y añadir :

$(SDKROOT)/ResourceRules.plist

El siguiente parche para PackageApplications me lo arregló, eliminé las reglas de recursos porque dice que está obsoleto en 10.10.

Testflight genera trabajo sin él. Appstore también.

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin % diff PackageApplication PackageApplicationFixed 155,157c155,156 < my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules", < "--sign", $opt{sign}, < "--resource-rules=$destApp/ResourceRules.plist"); --- > my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements", > "--sign", $opt{sign}); 

Envié un correo electrónico al soporte de TestFlight y obtuve esta respuesta:

Nuestro equipo actualmente está investigando este problema con la aplicación de escritorio TestFlight. Mientras tanto, utilice Xcode para crear el archivo IPA y luego cárguelo usando la aplicación de escritorio o el sitio web de TestFlight.

La solución sugerida funcionó.

La respuesta de Tim Gostony ya no funciona desde el lanzamiento de Xcode 7. Ahora el proceso de envío de App Store falla cuando las reglas de recursos están presentes. La solución es borrar su ruta de reglas de recursos de firma de código y reemplazar xcrun con la herramienta xcodebuild:

 xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file] 

El más simple Options.plist para exportar archivos ipa de distribución ad-hoc se ve así:

     iCloudContainerEnvironment Production teamID [YOUR TEAM ID] method ad-hoc   

Hay otras opciones disponibles para este archivo plist con respecto a bitcode, thinning de aplicaciones, etc. Por eso creo que la herramienta xcodebuild es la herramienta adecuada para exportar archivos ipa para iOS 9 y posteriores.

Hay más detalles sobre las opciones disponibles con el comando xcodebuild -help.

En Yosemite con XCode 6.4 incluso con el parche SDKROOT, falla la asignación de nombres. El siguiente artículo explica cómo aplicar parches al script XCode para evitar esto. Tenga en cuenta que esto es parchear XCode, por lo que es específico de la versión, pero soluciona el problema.

http://www.jayway.com/2015/05/21/fixing-your-ios-build-scripts

La respuesta de Alistra funciona para mí, pero no quiero cambiar un script que no sea mío (una futura versión de Xcode podría cambiar este archivo y la corrección se perderá).

  diff PackageApplication PackageApplicationFixed 155,157c155,156 <- my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules", <- "--sign", $opt{sign}, <- "--resource-rules=$destApp/ResourceRules.plist"); --- -> my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements", -> "--sign", $opt{sign}); 

Creo que la respuesta de Vladimir Grigorov es la mejor si tienes un archivo usando:

 xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file] 

En mi caso, no tengo el archivo, porque modifico la aplicación después de comstackrla y necesito cambiar la identificación del paquete y el certificado de firma.

La solución que encontré es llamarme a PackageApplication antes de utilizar PackageApplication y pedirle a PackageApplication que no PackageApplication sesión. Me gusta esto :

 replace : /usr/bin/xcrun -sdk iphoneos PackageApplication -v "" -o "" --sign "" --embed "" by : /bin/cp -rpfv "" "/embedded.mobileprovision" /usr/bin/codesign -v -vvvv -f -s "" --entitlements="" "" /usr/bin/xcrun -sdk iphoneos PackageApplication -v "" -o "" 

No te olvides de incrustar el archivo .mobileprovision usando para firmar con cp .

Como se especifica en otra respuesta , también puede simplemente no especificar el certificado de distribución para firmar y se empaquetará correctamente. TestFlight necesitaría actualizar su aplicación para hacer esto.

    Intereting Posts