Pregunta

Me escribió un script que usa xcodebuild para generar una acumulación AdHoc de una aplicación de iPhone.

Me gustaría editar este script para la salida el nombre de la Aprovisionamiento de perfil utilizado para firmar la construcción.
Esto me permitiría ingresar el perfil de aprovisionamiento en el zip que se genera de forma automática. De esta manera, podría enviar el archivo automáticamente a los probadores AdHoc y asegúrese de que tienen el perfil de aprovisionamiento adecuado para instalar la aplicación.

¿Hay alguna manera de extraer el nombre del archivo de suministro o archivo que se utiliza para firmar la solicitud :

  • de la aplicación edificado y firmado
  • del proyecto de Xcode (no quiero que analizar manualmente el archivo project.pbxproj, ya que esta solución podría romper en la próxima actualización de Xcode)
  • cualquier otra forma que sea scripts

sugerido a utilizar el security comando para obtener el nombre del certificado utilizado para firmar la aplicación. Una vez que tenga esta información, ¿hay alguna manera de encontrar a continuación, el nombre del archivo de suministro?


Esto es lo que he intentado:

Por desgracia, la salida de xcodebuild durante la construcción no contiene esta información. Durante la etapa de Codesign, existe la línea:

/usr/bin/codesign -f -s "iPhone Distribution: My name" ...

pero no puedo coincidir esto con un certificado.

Me miraba en el uso de codesign, y el comando

/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
parecía prometedor, pero no me da la necesidad de información.
No he encontrado ninguna opción útil en xcodebuild tampoco.

¿Fue útil?

Solución

El archivo de suministro ya es en de la aplicación. No necesita otra copia en el archivo zip (a menos que los probadores no entienden cómo utilizar el interior copia de la solicitud.)

Es el nombre YourApplication.app/embedded.mobileprovision

Esto no responde a su pregunta, porque el nombre del archivo original se ha perdido, sin embargo, parece resolver su problema más grande.

Otros consejos

Se puede utilizar el comando de la "seguridad" de la terminal; Por desgracia, al menos en mi MBP con Snow Leopard parece causar un fallo de segmentación en uno de los comandos que necesita para emitir. Para obtener más información, emitir desde el terminal

man security

De todos modos, aquí es lo que puede probar, asumiendo que su desarrollo / certificados de producción se almacenan en la llave de acceso:

security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;

El segundo comando hace que el fallo de segmentación (causada por el argumento -c), pero debe ser exactamente lo que necesita. Como alternativa, puede utilizar

security find-identity -p codesigning -v;

para obtener una lista de todos los certificados válidos que puede utilizar para firmar código de sus aplicaciones. Por cada certificado, la salida también contiene el mensaje SHA1, de modo que usted puede buscar fácilmente el certificado correspondiente en el llavero del SHA1 asocia a "iPhone de distribución: Su nombre". Esto, sin embargo, requiere que escriba su propia aplicación utilizando las API llavero.

Avísame si esto funciona en tu Mac o si el mismo problema fallo de segmentación.

EDITAR / ACTUALIZAR . He verificado el error en otras máquinas, y presentaron un error a Apple

¿Qué hay de buscar en el archivo plist _CodeSignature / CodeResources (de la aplicación construida) para archivos de tipo "mobileprovision"?

Esta es una manera de hacer que el uso de valores por defecto (1) para leer el archivo plist. Tienes que copiar el archivo CodeResources a algo con el sufijo ".Plist" para mantener los valores predeterminados feliz ...

cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision

(en mi caso de prueba, había 2 entradas .mobileprovision allí; ignorar el llamado "embedded.mobileprovision")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top