Proporcionar xcodebuild con.archivo mobileprovision


Estoy configurando Jenkins para automatizar compilaciones de iOS. ¿Hay alguna posibilidad de proporcionar un.mobileprovision archivo que no se agrega a la herramienta de aprovisionamiento en Xcode a xcodebuild?

Sé que puedo usar PROVISIONING_PROFILE y PROVISIONING_PROFILE[sdk=iphoneos*] pero requieren que se agregue el perfil provisioning al Organizador.

Sé que puedo hacer la operación con xcrun. Pero antes de ejecutar xcrun debo firmar con éxito la aplicación con xcodebuild.

¿Hay alguna manera de que solo pueda proporcionar el archivo de perfil de aprovisionamiento (.mobileprovision) a xcodebuild?

Author: Fredrik Andersson, 2012-06-21

2 answers

Tenemos una solución para esto-esencialmente lo que necesita hacer es 'instalar' el.archivo mobileprovision copiándolo en un directorio con el nombre del UUID del archivo de provisión móvil. Esto es lo que el Organizador Xcode realmente hace cuando hace doble clic en a .archivo mobileprovision.

Hay un pequeño programa llamado mpParse que puede extraer el UUID del archivo mobileprovision que usa el script - link para descargarlo en el código. Entonces es muy simple copiar la mobileprovision archivo al lugar correcto.

Aquí hay un script de shell 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 script directamente desde https://gist.github.com/2568707

Una vez que haya ejecutado el script, puede usar PROVISIONING_PROFILE y PROVISIONING_PROFILE[sdk=iphoneos*] en xcodebuild para crear su aplicación. Usamos esto en producción.

Editar: Solo como referencia, hice esencialmente esta pregunta aquí hace un rato ( Puede un Xcode .archivo mobileprovision ser 'instalado' desde la línea de comandos?) y se le ocurrió lo anterior cuando nadie parecía saber : -)

Actualización: Como alternativa a mpParse se podría utilizar apple tools: /usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)

 46
Author: Ben Clayton,
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
2017-05-23 12:17:08

Si usas sigh from fastlane puedes asignar su salida a una variable provision_id=sigh

Esto también funciona si sigh tiene parámetros: sigh(...)

Este es el único script que funcionó para mí:

`var=gre (grep UUID-A1-a / grep-io " [- A-Z0-9]{36}")'

Utilizar con: "$var.mobileprovision"

 0
Author: wolffan,
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
2017-03-02 09:58:56