Ligne de commande Mise à jour des profils d’approvisionnement

Je n’ai rien trouvé à ce sujet (peut-être que j’utilise simplement les mauvais termes de recherche ..):
Nous essayons de créer un paramètre d’continuous integration sensible pour nos applications. Pour avoir une implémentation VRAIMENT judicieuse, le serveur de génération doit pouvoir actualiser automatiquement les profils d’approvisionnement utilisés à partir d’Apple. Semblable à ce que fait l’organisateur X-Code, mais automatiquement via la ligne de commande.
Un indice si c’est possible?

Voici mon script bash, où le premier argument du script ($ 1) correspond à l’emplacement des nouveaux profils.

 rm -Rf ~/Library/MobileDevice/Provisioning\ Profiles/* cp "$1"/*.* ~/Library/MobileDevice/Provisioning\ Profiles/ 

Fondamentalement, tout ce qui se trouve dans ce dossier ~ / Library / MobileDevice / Provisioning Profiles peut être utilisé avec (et apparaîtra dans Xcode).

Si vous envisagez de mettre en place un système de CI, j’ai récemment parlé de l’utilisation de Hudson, et ici, vous avez mis en place des diapositives et des notes. Mon email est sur mon site si vous avez des questions à ce sujet.

Mise à jour: Cupertino ne fonctionnera plus sur le dernier iTunes. Cherchez plutôt à utiliser le soupir


On dirait que cette interface de ligne de commande aidera beaucoup:

https://github.com/nomad/cupertino

ce qui vous permet de télécharger tous les profils de dissortingbution comme ça (merci @tdubik):

ios profiles:download:all --type dissortingbution

Une autre approche consisterait à utiliser une licence de développement d’entreprise (300 $ / an) qui vous permet de créer des périphériques sans provisioning! Vous pouvez ainsi créer votre application et l’envoyer à un appareil sans avoir à vous rendre dans le centre de développement d’Apple ou à enregistrer de nouveaux appareils.

Notez que cela ne vous permettrait pas de dissortingbuer votre application sur l’AppStore, mais si vous êtes une maison de développement qui crée des tonnes d’applications pour les clients, cela facilitera certainement le processus de création et d’envoi aux clients! Je ne suis pas sûr si cela serait dans les politiques d’utilisation légitime d’Apple ou pas, alors s’il vous plaît vérifier cela avant d’envisager cette option. Mais cela pourrait être quelque chose à considérer pour les prototypes, etc., et quand ils veulent réellement l’expédier, vous leur faites acquérir leur propre licence de programme de développeur.

Essayez d’utiliser apple_dev_center.rb depuis https://github.com/lacostej/apple-dev

Il parsing les informations à partir du site Web développeur Apple et télécharge les profils pour vous permettre de les copier au bon emplacement automatiquement.

Sigh peut gérer les profils de provisioning pour vous. Cependant, il ne prend pas en charge l’installation de profils que vous avez déjà récupérés. Cependant, j’ai toujours trouvé intéressant de regarder leur source pour savoir comment ils installent effectivement un profil après l’avoir téléchargé .

Heureusement, c’est très similaire à la réponse de James J :

 def self.install_profile(profile) UI.message "Installing provisioning profile..." profile_path = File.expand_path("~") + "/Library/MobileDevice/Provisioning Profiles/" uuid = ENV["SIGH_UUID"] || ENV["SIGH_UDID"] profile_filename = uuid + ".mobileprovision" destination = profile_path + profile_filename # If the directory doesn't exist, make it first unless File.directory?(profile_path) FileUtils.mkdir_p(profile_path) end # copy to Xcode provisioning profile directory FileUtils.copy profile, destination if File.exist? destination UI.success "Profile installed at \"#{destination}\"" else UI.user_error!("Failed installation of provisioning profile at location: #{destination}") end end 

J’ai un script pour effectuer cette installation locale pour moi:

 #!/bin/bash -euo pipefail BASH_SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$BASH_SOURCE_DIR" # by default bash passes the glob characters if nothing matched the glob # disable that # http://stackoverflow.com/a/18887210/9636 shopt -s nullglob # this creates a proper bash array, which we need since our profiles # have funny characters in them MOBILE_PROVISIONS=(*.mobileprovision) # re-enable default nullglob behavior shopt -u nullglob # On a brand new machine that has never run any app on a development device # the ~/Library/MobileDevice/"Provisioning Profiles" directory doesn't exist mkdir -p ~/Library/MobileDevice/"Provisioning Profiles" for mobileprovision in "${MOBILE_PROVISIONS[@]}" do uuid=$( ./uuid-from-mobileprovision.bash "${mobileprovision}" ) cp "${mobileprovision}" ~/Library/MobileDevice/"Provisioning Profiles"/"${uuid}".mobileprovision done 

qui dépend d’un autre script uuid-from-mobileprovision.bash :

 #!/bin/bash -euo pipefail if [ ! -f "${1}" ] then echo "Usage: $0 " 1>&2 exit 1 fi UUID=$( grep --text --after-context=1 UUID "${1}" | grep --ignore-case --only-matching "[-A-Z0-9]\{36\}" ) if [ -z "${UUID}" ] then echo "Invalid mobileprovision file: ${1}" 1>&2 exit 2 else echo "${UUID}" fi 

J’ai essayé de faire cela pendant un certain temps. Finalement fait !!

Peut utiliser fastlane sigh pour télécharger et installer uniquement le profil provisoire dont vous avez besoin.

 fastlane sigh renew --adhoc -n "provisional_profile_name" --app_identifier "your_app_identifier" -u "apple_login _username" --ignore_profiles_with_different_name 

Remarque: cette commande nécessitait tout profil provisoire de l’application déjà installé dans le système. Il a jeté l’erreur pour moi autrement.

provisoire_profil_nom = Juste le nom du profil, n’a pas besoin d’extension.