Tenemos una solución para esto: básicamente, lo que debe hacer es "instalar" el archivo .mobileprovision copiándolo en un directorio con el nombre del UUID del archivo de suministro móvil. Esto es lo que realmente hace Xcode Organizer cuando hace doble clic en un archivo .mobileprovision.
Hay un pequeño programa llamado mpParse que puede extraer el UUID del archivo de la provisión móvil que utiliza el script - enlace para descargar en el código. Entonces es muy simple copiar el archivo de la provisión móvil al lugar correcto.
Aquí hay un script que hice para hacer esto:
#!/bin/sh
# 2012 - Ben Clayton (benvium). Calvium Ltd
# Found at https://gist.github.com/2568707
#
# This script installs a .mobileprovision file without using Xcode. Unlike Xcode, it'll
# work over SSH.
#
# Requires Mac OS X (I'm using 10.7 and Xcode 4.3.2)
#
# IMPORTANT NOTE: You need to download and install the mpParse executable from http://idevblog.info/mobileprovision-files-structure-and-reading
# and place it in the same folder as this script for this to work.
#
# Usage installMobileProvisionFile.sh path/to/foobar.mobileprovision
if [ ! $# == 1 ]; then
echo "Usage: $0 (path/to/mobileprovision)"
exit
fi
mp=$1
uuid=`/usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i ${mp})`
echo "Found UUID $uuid"
output="~/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision"
echo "copying to $output.."
cp "${mp}" "$output"
echo "done"
Puede descargar el guión directamente de https://gist.github.com/2568707
Una vez que haya ejecutado la secuencia de comandos, puede utilizar PROVISIONING_PROFILE y PROVISIONING_PROFILE [SDK = iphoneos *] en xcodebuild para crear tu aplicación. Usamos esto en producción.
Editar: Sólo como referencia, me preguntó en esencia esta pregunta aquí hace un rato (Can an Xcode .mobileprovision file be 'installed' from the command line?) y se acercó con lo anterior cuando nadie parecía saber :-)
Actualización: Como alternativa a mpParse se podría utilizar herramientas de manzana: /usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)
1 Gran solución - gracias por compartir. – Till
¡Impresionante! Gracias =) –
Me alegro de poder ayudar! –