Me gustaría escribir un script que pueda leer información como Bundle Identifier o tal vez el número de versión del Info.plist de la aplicación. Xcode no parece dar esa información en sus variables de entorno. ¿Hay alguna otra manera de ponerlos en sh/bash?Cómo leer información plist (id del paquete) desde un script de shell
Respuesta
El comando defaults
puede leer/escribir en cualquier archivo plist, simplemente 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 desde el archivo del paquete de aplicaciones Info.plist
.
Los valores predeterminados también funcionan con listas binarias sin ningún paso adicional.
Puede leer el archivo directamente desde el producto creado. Sin embargo, si miras el archivo info.plist en el editor, verás las variables del shell. P.ej. el ID de paquete se tiene el siguiente comando shell:
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
Puede llamar ${PRODUCT_NAME:rfc1034identifier}
en cualquier script que se ejecuta Xcode y se debe llenar.
Eso suena bien aunque no lo he probado. El inconveniente es que no recuperas el ID del paquete, sino solo la última parte del mismo, por lo que tendrías que codificar la parte "com.mycompanyname" en algún lugar ... – Dimitris
Hay un programa de línea de comandos instalado en la Mac llamado PlistBuddy que puede leer/escribir valores en un plist. Escriba 'man PlistBuddy' en la Terminal para obtener más información.
He intentado PlistBuddy y he jugado mucho con él. El problema es que PlistBuddy puede imprimir el ID del paquete pero no devolverlo (solo devuelve 0 o 1). Así que al ser un novato de shell tuve problemas para obtener el asignado a una variable. Sin embargo, fue cómo conseguí que funcionara. Publicaré mi respuesta ahora. – Dimitris
Usando PlistBuddy, una aplicación por Apple, es posible asignar la cadena a var así:
#!/bin/sh
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
Dónde BUILD_ROOT y INFOPLIST_PATH son variables definidas por Xcode si ejecuta este script en un "Run Script" fase de construcción
PlistBuddy no siempre está presente en el sistema. Si distribuye la secuencia de comandos, puede considerar el uso de valores predeterminados, como señalaron las otras respuestas. –
- 1. ¿Cómo leer la versión del paquete de PList?
- 2. cómo leer solo un carácter en el script de shell
- 3. Cómo ejecutar un comando de shell desde un script php
- 4. ¿Cómo ejecuto un editor desde un script de shell?
- 5. Cómo ejecutar un script de shell de Unix desde Windows
- 6. leer el contenido de un directorio utilizando script de shell
- 7. Entrada desde el script de shell
- 8. ¿Cómo ejecutar un script de shell desde C en Linux?
- 9. ¿Cómo ejecutar un script de shell Unix desde código Java?
- 10. Escribir/Leer archivo plist iPhone
- 11. Obtener datos de la plist Información
- 12. Invocar script de shell externo desde PHP y obtener su ID de proceso
- 13. Análisis del argumento del script de Shell
- 14. ¿Cómo puedo redireccionar stdin desde un script de shell a un comando en el script de shell?
- 15. GnuPG Shell Script - Se niega a leer la contraseña
- 16. Publicar una descarga en bitbucket desde un script de shell
- 17. Importación de funciones desde un script de shell
- 18. ¿Directorio actual del script de Shell?
- 19. Cómo leer información del dispositivo bluetooth del núcleo
- 20. ¿Cómo ejecutar el script de shell desde LaTeX?
- 21. ¿Cómo hacer un script de shell global?
- 22. Cómo habilitar la configuración de iPhone (paquete, plist) en MonoTouch
- 23. iTunes api, búsqueda por ID del paquete?
- 24. ¿Cómo ejecutar un script de ruby dentro del contexto del paquete?
- 25. ¿Cómo leer usando "leer" del descriptor de archivo 3 en el script bash?
- 26. ¿Cómo redirecciono el resultado de un script de shell completo dentro del script?
- 27. Cómo leer la estructura de datos del archivo de .Plist en NSArray
- 28. cómo usar un script de shell para supervisar un programa?
- 29. enviar salida al archivo desde el script de shell
- 30. Analizando los argumentos del script de shell
Esta es la mejor respuesta (especialmente porque PlistBuddy ya no está instalado por defecto); debes seleccionarlo – Olie
También tenga en cuenta que los valores predeterminados parecen querer una ruta completa, no una ruta relativa, ni siquiera si se encuentra actualmente en el directorio con el archivo plist que está tratando de leer. (¡Extraño!) – Olie
Entonces, cuando lo haces dentro de algún directorio, puedes usar: valores predeterminados write $ PWD/SomeMyDirectory/Info.plist CFBundleIdentifier "com.apple.Preview" – iVader