tutorial script programacion lenguaje comandos iphone bash shell plist adhoc

iphone - script - bash tutorial



Analizar archivos de mobileprovision en bash? (6)

Estoy intentando crear un sistema php / bash / mysql para automatizar la distribución adhoc para aplicaciones de iPhone. Pero quiero leer la clave de identificador de la aplicación en el archivo de proyectos de mobileprovision y cambiarlo según el archivo info.plist.

Actualmente puedo compilar archivos ipa desde php SI la clave cfbundleidentifer es la misma que su archivo de provisión.

Encontré un código como este https://gist.github.com/711794 pero quiero que el script bash lo integre en mi sistema.

Gracias


Creé una función bash basada en la respuesta de jlawrie para enumerar todos los ID de paquete de .mobileprovision de la carpeta ~/Library/MobileDevice/Provisioning Profiles .

Guarde esto en su .bash_profile y simplemente list_xcode_provisioning_profiles con list_xcode_provisioning_profiles desde un terminal.

list_xcode_provisioning_profiles() { while IFS= read -rd '''' f; do 2> /dev/null /usr/libexec/PlistBuddy -c ''Print :Entitlements:application-identifier'' /dev/stdin / <<< $(security cms -D -i "$f") done < <(find "$HOME/Library/MobileDevice/Provisioning Profiles" -name ''*.mobileprovision'' -print0) }


Es un poco tedioso, ya que una .mobileprovision es "datos firmados PKCS # 7" o algo así.

Afortunadamente, probablemente puedas salirte con grep :)


Si desea extraer el plist del mobileprovision de una manera adecuada y no confiar en grepping / sedding / etc., Puede usar OpenSSL de la siguiente manera:

openssl smime -inform der -verify -noverify -in file.mobileprovision

Un ejemplo completo en su caso podría ser:

openssl smime -inform der -verify -noverify -in file.mobileprovision > tmp.plist /usr/libexec/PlistBuddy -c ''Print :Entitlements:application-identifier'' tmp.plist

La parte OpenSSL debería funcionar en cualquier plataforma, aunque hasta ahora solo he hecho eso en una Mac. PlistBuddy solo está en Mac, pero se pueden encontrar otras utilidades para leer / escribir archivos de la lista de propiedades.


Si está ejecutando esto en una máquina con mac os x, puede usar lo siguiente:

/usr/libexec/PlistBuddy -c ''Print :Entitlements:application-identifier'' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)


Una solución entre muchas ...

Use egrep con la opción -a, que trata los archivos binarios como archivos de texto y ''-A 2'' que mostrará las dos líneas después de la cadena que desea hacer coincidir: ApplicationIdentifierPrefix.

Después de eso, recorte la línea de corchetes y espacios en blanco usando sed.

Utilizando una serie de tuberías:

egrep -a -A 2 ApplicationIdentifierPrefix file.mobileprovision | grep string | sed -e ''s/<string>//'' -e ''s/<//string>//'' -e ''s/ //''


Utilicé el código del repositorio de mobileprovision-read de mobileprovision-read para poder extraer información del archivo de mobileprovision. Esto utiliza API de macOS para leer el archivo.

Aquí está el uso de ejecutar el programa generado:

mobileprovision-read -- mobileprovision files querying tool. USAGE mobileprovision-read -f fileName [-o option] OPTIONS type – prints mobileprovision profile type (debug, ad-hoc, enterprise, appstore) appid – prints application identifier Will print raw provision''s plist if option is not specified. You can also use key path as an option. EXAMPLES mobileprovision-read -f test.mobileprovision -o type Prints profile type mobileprovision-read -f test.mobileprovision -o UUID Prints profile UUID mobileprovision-read -f test.mobileprovision -o ProvisionedDevices Prints provisioned devices UDIDs mobileprovision-read -f test.mobileprovision -o Entitlements.get-task-allow Prints 0 if profile doesn''t allow debugging 1 otherwise