bottom bar ios bash xcodebuild xcrun

bottom - status bar ios



¿Se puede ''instalar'' un archivo Xcode.mobileprovision desde la línea de comando? (7)

Desde que hice esta pregunta, he construido una solución yo mismo. El secreto es simplemente copiar el archivo a la carpeta ~ / Library / MobileDevice / Provisioning Profiles /, pero (este es el truco) renombrado a [The UUID] .mobileprovision.

El UUID se mantiene dentro de una parte de texto del archivo (en un plist). Desafortunadamente, el archivo también incluye archivos binarios, por lo que ''la lectura predeterminada'' no puede leerse. Afortunadamente este tipo ha construido una pequeña utilidad de línea de comandos para obtener el UUID (y algunas otras cosas de nuevo).

Aquí está mi script de trabajo completo:

https://gist.github.com/2568707

Intento automatizar el proceso de creación de aplicaciones para nuestros clientes utilizando scripts bash que se ejecutan en un Mac Mini Server (OSX 10.7).

Mi guión se basa en el guión espectacularmente útil de github publicado originalmente en https://gist.github.com/949831

Estoy construyendo la aplicación usando xcodebuild, y luego firmando e insertando el archivo de la provisión móvil usando xcrun.

Cuando hago todo esto con un archivo de instalación móvil que instalé manualmente en Xcode usando la GUI (por ejemplo, haciendo doble clic), funciona bien. Si simplemente trato de usar un archivo de suministro móvil copiado en el servidor con SCP, falla (error de código de sesión: no se puede encontrar el perfil de aprovisionamiento ''123abc123'').

Presumiblemente, esto se debe a que el archivo no está ''instalado''.

¿Hay alguna forma de instalar el archivo de la provisión móvil desde la terminal? Estoy usando SSH así que usar cosas como el comando ''abrir'' no funcionará.

¡Gracias!


Ejecutamos nuestras construcciones en Jenkins y tuvimos un problema similar. Nuestro perfil de aprovisionamiento Ad Hoc cambia con bastante frecuencia y no queremos correr con cada uno de nuestros esclavos de construcción instalándolos en xcode cada vez que cambian, así que esto es lo que tengo que trabajar:

/usr/bin/xcrun -sdk iphoneos PackageApplication -v <path to yourapp.app> -o <path to your .ipa file> --sign "<Name of signing identity>" --embed <path to .mobileprovision file>

El "" es lo que ves en la sección "Firma de código" en la configuración de compilación de tu objetivo.


Parece que Apple agregó una línea vacía en el archivo de perfil de aprovisionamiento .mobileprovision debajo de cada par de clave-valor y la opción grep ya no funciona.

A continuación, le mostramos cómo recuperarlo con PlistBuddy y la seguridad mediante una secuencia de comandos python

command = "/usr/libexec/PlistBuddy -c ''Print :UUID'' /dev/stdin <<< $(security cms -D -i abc.mobileprovision)" uuid = os.popen(command).readline().rstrip(''/n'')



Si no desea descargar dependencias externas (como lo hizo Ben), lo siguiente debería funcionar en la mayoría de los casos:

uuid=`grep UUID -A1 -a adhoc.mobileprovision | grep -io "[-A-F0-9]/{36/}"` cp adhoc.mobileprovision ~/Library/MobileDevice/Provisioning/ Profiles/$uuid.mobileprovision

Tenga en cuenta que un UUID se compone de dígitos hexadecimales, por lo que el rango correcto es [-A-F0-9] y no [-A-Z0-9] .

Bonificación: Descargue e instale perfiles

Al usar la herramienta cupertino , el siguiente fragmento descarga todos sus perfiles de distribución del Portal del Desarrollador y los instala.

ios profiles:download:all --type distribution for file in *.*provision*; do uuid=`grep UUID -A1 -a "$file" | grep -io "[-A-F0-9]/{36/}"` extension="${file##*.}" echo "$file -> $uuid" mv -f "$file" ~/Library/MobileDevice/Provisioning/ Profiles/"$uuid.$extension" done

cupertino (el comando ios ) se puede instalar con sudo gem install cupertino .


Un compendio de todas las demás respuestas update_provisioning_profile.sh :

#!/bin/sh # # Download and install a single iOS provisioning profile # Requires https://github.com/nomad/cupertino # # Usage # - Login to your account once: # ios login # - Configure TEAM and PROFILE (instructions below) # - Run update_provisioning_profile.sh at anytime, usually after adding/removing devices to the profile # Configure the team identifier # Copy it from developer portal or just use cupertino to get it: # ios devices # Copy the string in parens and set it as TEAM TEAM="team id" # Configure the profile name you want to manage # Copy it from developer portal or use cupertino to get a list (ignoring Xcode managed profiles): # ios profiles --team ${TEAM} | grep -v ''iOS Team Provisioning Profile'' # Copy the name as-is and set as PROFILE PROFILE="profile name" # Fetch the profile using `cupertino` tool # you need to run `ios login` once to setup the account ios profiles:download "${PROFILE}" --team ${TEAM} PROFILE_FILE=`echo $PROFILE | tr '' '' ''_''` # `cupertino` tool will replace spaces with _ UUID=`/usr/libexec/PlistBuddy -c ''Print :UUID'' /dev/stdin <<< $(security cms -D -i ${PROFILE_FILE}.mobileprovision)` # copy where Xcode can find it cp ${PROFILE_FILE}.mobileprovision "$HOME/Library/MobileDevice/Provisioning Profiles/${UUID}.mobileprovision" # clean rm ${PROFILE_FILE}.mobileprovision

Fácil de adaptar a sus necesidades de aprovisionamiento.


Use fastlane sigh para instalar un archivo provisional particular o puede crear uno nuevo.

fastlane sigh renew --adhoc -n "provisional-profile-name" --app_identifier "app-identifier" -u "user-name" --ignore_profiles_with_different_name

provisional-profile-name es solo el nombre del perfil, no contiene la extensión .mobileprovision.

Para crear un nuevo perfil adhoc con todos los UUID de dispositivo agregados,

fastlane sigh --adhoc --app_identifier "app-identifier" -u "username"

Fastfile,

lane :build do sigh( adhoc: true, app_identifier: "***APP_ID**", provisioning_name: "**Profile_name**", username: "Apple_ID", force: true, skip_certificate_verification: true, ) gym( #export_options: "exportPlist.plist", scheme: "**scheme-name**", export_method: "ad-hoc", xcargs: "PROVISIONING_PROFILE=$SIGH_UUID", ) end