Cómo leer la información plist (ID de paquete) a partir de una secuencia de comandos shell
-
29-09-2019 - |
Pregunta
Me gustaría escribir un script que puede leer información como identificador de paquete o tal vez el número de versión de la Info.plist de la aplicación. Xcode no parece dar esa información en ella de las variables de entorno. ¿Hay alguna otra manera de conseguirlos en sh / bash?
Solución
El comando defaults
puede leer / escribir en cualquier archivo plist, sólo le dan un camino menos la extensión .plist
:
$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier
com.apple.Preview
Esto empuja el valor CFBundleIdentifier
directamente del archivo Info.plist
del paquete de aplicaciones.
predeterminados también trabaja con plists binarios sin ningún paso adicional.
Otros consejos
El uso de PlistBuddy, una aplicación por Apple, es posible asignar la cadena a var como esto:
#!/bin/sh
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
Cuando BUILD_ROOT y INFOPLIST_PATH son variables definidas por Xcode si ejecuta este script en una fase de construcción "Ejecutar script".
Usted sólo puede leer el archivo directamente desde el producto de edificio. Sin embargo, si nos fijamos en el archivo info.plist sí en el editor verá las variables de shell mismos. P.ej. el ID de paquete se tiene el siguiente comando shell:
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
Se puede llamar ${PRODUCT_NAME:rfc1034identifier}
en cualquier script de shell que se ejecuta Xcode y debe llenar.
Hay un programa de línea de comando instalado en el Mac llamada PlistBuddy que puede leer los valores / escritura en un plist. Tipo 'hombre PlistBuddy' en la Terminal para obtener más información.
Este comando funcionó para mí:
/usr/libexec/PlistBuddy -c 'print ":CFBundleIdentifier"' Info.plist