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’intégration continue raisonnable pour nos applications. Pour avoir une implémentation VRAIMENT sensible, le serveur de génération doit pouvoir actualiser automatiquement les profils de provisioning utilisés par Apple. Semblable à ce que fait l'organisateur X-Code, mais de manière automatique via une ligne de commande.
Avez-vous la moindre idée si c'est possible?
Voici mon script bash pour cela, où le premier argument du script ($ 1) est 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/Profils de provisioning/peut être utilisé pour construire avec (et sera affiché dans Xcode).
Si vous envisagez de mettre en place un système d’information commune, j’ai récemment parlé de l’utilisation de Hudson pour ce système, et ai ajouté quelques diapositives et notes ici-même . Mon email est sur mon site si vous avez des questions à ce sujet.
Mise à jour: Cupertino ne fonctionnera plus sur le dernier iTunes. Regardez plutôt en utilisant soupir
On dirait que cette interface en ligne de commande vous aidera beaucoup:
https://github.com/nomad/cupertino
qui vous permet de télécharger tous les profils de distribution comme suit (merci @tdubik):
ios profiles:download:all --type distribution
Une autre approche consisterait à utiliser une licence de développement Enterprise (300 USD/an) qui vous permet de créer des périphériques sans provisioning! Vous pouvez donc créer votre application et l'envoyer à un appareil sans avoir besoin d'aller au centre de développement Apple ou d'enregistrer de nouveaux appareils.
Notez que cela ne vous permettrait pas de distribuer votre application sur l'Appstore, mais si vous êtes une entreprise de développement qui construit des tonnes d'applications pour les clients, cela facilitera grandement le processus de "génération et envoi aux clients"! Je ne suis pas sûr que ce soit dans les politiques d'utilisation légitime d'Apple ou non, alors vérifiez-le avant de considérer cette option. Mais cela pourrait être quelque chose à considérer pour les prototypes, etc., et quand ils veulent réellement l'expédier, vous les obligez à obtenir leur propre licence de programme de développeur.
Essayez d’utiliser Apple_dev_center.rb depuis https://github.com/lacostej/Apple-dev
Il analyse les informations du site Web des développeurs Apple et télécharge les profils pour les copier automatiquement à l'emplacement approprié.
Sigh
peut gérer les profils de provisioning pour vous. Cependant, il ne prend pas en charge l’installation des profils que vous avez déjà récupérés. Cependant, j’ai toujours trouvé intéressant de consulter leur source pour savoir comment ils installent réellement un profil après l’avoir téléchargé .
Heureusement, cela ressemble beaucoup à 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 <path/to/mobileprovision/file>" 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'essaie de faire ce travail depuis quelque temps. Enfin réussi !!
Vous pouvez 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 déjà un profil provisoire de l'application installé dans le système. Il a jeté une erreur pour moi autrement.
provisoire_profile_name = Juste le nom du profil, pas besoin d'extension.