iphone - not - Actualización de Línea de Comando de Perfiles de Aprovisionamiento
provisioning profile ios (5)
Actualización: Cupertino ya no trabajará en iTunes más reciente. Considera usar sigh lugar
Parece que esta interfaz de línea de comando ayudará a lo grande:
https://github.com/nomad/cupertino
que le permite descargar todos los perfiles de distribución de esa manera (gracias @tdubik):
ios profiles:download:all --type distribution
Otro enfoque sería utilizar una licencia de desarrollo empresarial ($ 300 / año) que le permite construir para dispositivos sin aprovisionamiento. Así que puedes construir tu aplicación y enviarla a un dispositivo sin tener que ir al centro Apple Dev o registrar ningún dispositivo nuevo.
Tenga en cuenta que esto no le permitiría distribuir su aplicación en la tienda de aplicaciones, pero si usted es una casa de desarrollo que crea montones de aplicaciones para sus clientes, ¡puede facilitar bastante su proceso de "creación y envío a clientes"! No estoy seguro de si esto estaría en las políticas de uso legítimo de Apple o no, así que por favor revise eso antes de considerar esa opción. Pero podría ser algo a tener en cuenta para los prototipos, etc., y cuando en realidad quieren enviarlo, obtienes que obtengan su propia licencia del programa de desarrollo.
No pude encontrar nada sobre esto (tal vez estoy usando los términos de búsqueda equivocados ...):
Estamos tratando de construir una configuración de integración continua sensible para nuestras aplicaciones. Para tener una implementación REALMENTE sensata, el servidor de compilación debería ser capaz de actualizar automáticamente los perfiles de aprovisionamiento utilizados desde Apple. Similar a lo que hace el organizador de X-Code, pero automágicamente a través de la línea de comando.
¿Alguna pista si eso es posible en absoluto?
Aquí está mi script bash, donde el primer argumento del script ($ 1) es la ubicación de los nuevos perfiles.
rm -Rf ~/Library/MobileDevice/Provisioning/ Profiles/*
cp "$1"/*.* ~/Library/MobileDevice/Provisioning/ Profiles/
Básicamente, cualquier cosa en esa carpeta ~ / Library / MobileDevice / Provisioning Profiles / se puede usar para compilar (y se mostrará en Xcode).
Si está buscando pararse un sistema de CI, recientemente di una charla sobre el uso de Hudson para él, y coloco algunas diapositivas y notas aquí . Mi correo electrónico está en mi sitio si tiene alguna pregunta al respecto.
He estado tratando de hacer que esto funcione por algún tiempo. ¡Finalmente lo hizo!
Puede usar fastlane sigh para descargar e instalar solo el perfil provisional que necesita.
fastlane sigh renew --adhoc -n "provisional_profile_name"
--app_identifier "your_app_identifier" -u "apple_login _username" --ignore_profiles_with_different_name
Nota: Este comando necesitaba un perfil provisional de la aplicación ya instalada en el sistema. Me arrojó un error de lo contrario.
provisional_profile_name = Solo el nombre del nombre del perfil, no necesita extensión.
Intenta usar apple_dev_center.rb desde https://github.com/lacostej/apple-dev
Analiza la información del sitio web del desarrollador de Apple y descarga los perfiles para que los copie automáticamente en la ubicación correcta.
Sigh
puede administrar los perfiles de suministro para usted. Sin embargo, no es compatible con la instalación de perfiles que ya ha buscado. Sin embargo, todavía me pareció valioso mirar su fuente de cómo realmente instalan un perfil una vez que lo han descargado .
Afortunadamente, es muy similar a la respuesta 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
Tengo una secuencia de comandos para realizar esta instalación local para mí:
#!/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://.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
que depende de otra secuencia de comandos 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