web-dev-qa-db-fra.com

Fournit xcodebuild avec le fichier .mobileprovision

Je suis en train de configurer Jenkins pour automatiser les versions iOS. Existe-t-il une possibilité de fournir un fichier .mobileprovision qui n'est pas ajouté à l'outil de provisioning dans Xcode to xcodebuild?

Je sais que je peux utiliser PROVISIONING_PROFILE et PROVISIONING_PROFILE [sdk = iphoneos *], mais ils nécessitent l'ajout du profil d'approvisionnement à l'organisateur.

Je sais que je peux faire l'opération avec xcrun. Mais avant d'exécuter xcrun, je dois signer l'application avec xcodebuild. 

Est-il possible que je puisse simplement fournir le fichier de profil d'approvisionnement (.mobileprovision) à xcodebuild?

26
Fredrik Andersson

Nous avons une solution à cela. En gros, vous devez «installer» le fichier .mobileprovision en le copiant dans un répertoire nommé d'après l'UUID du fichier de provision pour mobile. C'est ce que fait l'organiseur Xcode lorsque vous double-cliquez sur un fichier .mobileprovision.

Il existe un petit programme appelé mpParse qui peut extraire l'UUID du fichier mobileprovision utilisé par le script - un lien à télécharger dans le code. Il est alors extrêmement simple de copier le fichier mobileprovision au bon endroit.

Voici un script Shell que j'ai créé pour cela:

#!/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"

Vous pouvez télécharger le script directement à partir de https://Gist.github.com/2568707

Après avoir exécuté le script, vous pouvez utiliser PROVISIONING_PROFILE et PROVISIONING_PROFILE [sdk = iphoneos *] dans xcodebuild pour créer votre application. Nous l'utilisons en production.

Edit: Juste pour référence, j’ai posé cette question il ya un petit bout de temps ( Est-ce qu’un fichier .mobileprovision de Xcode peut être "installé" à partir de la ligne de commande? ) et est venu avec ce qui précède quand personne ne semblait le savoir :-)

Mise à jour: Comme alternative à mpParse, on pourrait utiliser les outils Apple: /usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)

47
Ben Clayton

Si vous utilisez sigh de fastlane, vous pouvez affecter sa sortie à une variable provision_id=sigh

cela fonctionne aussi si soupir a params: sigh(...)

C'est le seul script qui a fonctionné pour moi:

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

utiliser avec: "$var.mobileprovision"

0
wolffan