xcodebuild no copia el archivo.app


He creado un firmado .archivo xcarchive usando el comando xcodebuild.

Dentro de la .xcarchive es una .archivo de la aplicación. Dentro del .app es un archivo llamado archived-expanded-entitlements.xcent. Este archivo es la clave de mi problema.

Corro un comando xcodebuild diferente que crea un .IPA archivo de la .xcarchive.

Se produce un error al crear el IPA debido a las autorizaciones-expandidas-archivadas.falta el archivo xcent. La cosa es, xcodebuild está creando un directorio temporal donde copias sobre mi .archivo de la aplicación, y dentro de ESO .archivo de la aplicación, no hay derechos de extensión archivados.xcent archivo.

Todos los demás archivos están ahí excepto este.

Los comandos que corro están debajo:

Esto crea el xcarchive:

xcodebuild -project diplomat.xcodeproj -scheme schemeName archive -archivePath /Path/To/Archive/name.xcarchive -configuration AppStore CODE_SIGN_IDENTITY="identity" PROVISIONING_PROFILE=provProfile

Esto crea el IPA:

xcodebuild -exportArchive -exportFormat IPA -archivePath /Path/To/Archive/name.xcarchive -exportPath /Path/To/Archive/name.ipa

A pesar de especificar la ubicación de la .xcarchive, crea un directorio temporal y no incluye el archivo importante. Tenga en cuenta, los derechos archivados-ampliados -.el archivo xcent es creado durante el.proceso xcarchive (el primer comando que se ejecuta) y no se puede copiar en el directorio temp durante la segunda ejecución del comando.

Este es el error exacto. Google y StackOverflow han producido errores similares, pero nada con este problema real.

Checking original app

     + /usr/bin/codesign --verify -vvvv    /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-  42128-00007ED35037747A/name.app

Program /usr/bin/codesign returned 1 : 

     [/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing: 

     /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent
]

Codesign check fails :

      /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing: 

      /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent

Done checking the original app
Author: Jan Rüegg, 2014-05-15

2 answers

Este es un comportamiento extraño de xcodebuild, pero aún puede usar el comando exportArchive y especificar el perfil de aprovisionamiento usando exportProvisioningProfile:

xcodebuild -exportArchive -exportFormat IPA \
  -archivePath /Path/To/Archive/name.xcarchive \
  -exportPath /Path/To/Archive/name.ipa \
  -exportProvisioningProfile 'PROVISIONING_PROFILE_NAME'

Esto reembarcará el perfil de aprovisionamiento dentro de la aplicación y en realidad no necesitará especificar la identidad de firma de código de nuevo, porque el archivo ya debe firmarse durante el proceso de archivo.

 25
Author: Yossi Shmueli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 18:04:31

Mi respuesta se consideraría una solución alternativa, pero resolvió el problema. No sé por qué el único archivo no se estaba copiando, pero encontré una manera de que no fuera importante.

Reemplace el 2do comando xcodebuild con esto, que utiliza xcrun:

/usr/bin/xcrun -sdk iphoneos PackageApplication -v /Path/To/Archive/name.xcarchive/Products/Applications/name.app -o /Path/To/Archive/DiplomatStaples.ipa --sign "identity" - -embed "provProfile"

Esto crea un IPA usando el xcarchive y luego vuelve a incrustar la identidad y el perfil de aprovisionamiento, por lo que aunque el mismo error que el anterior todavía ocurre y se imprime, la "doble inmersión" con la identidad de firma de código y el perfil de aprovisionamiento lo hace sin sentido. Ahora puedo instalar la aplicación en los dispositivos.

Para las mentes inquietas: La razón por la que no solo estoy usando xcrun en primer lugar es porque incluso si especifique un perfil prov y una identidad de firma, xcrun usará el perfil incrustado y la identidad de firma en el proyecto en función de la configuración (Debug, AppStore, Release, etc.) que especifique. xcodebuild firmará con los certificados que le proporcione.

El objetivo de esta operación era eliminar la necesidad de aprovisionar los certificados de perfil que el sistema CI requería de las máquinas de desarrollo, permitiendo probar la configuración de "AppStore" para ser firmada con los certificados de distribución AdHoc, y permitiendo volver a firmar el xcarchive más adelante con los certificados de distribución de la tienda de aplicaciones reales.

 7
Author: user1366911,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-15 15:50:48