Come leggere le informazioni plist (bundle id) da uno script di shell
-
29-09-2019 - |
Domanda
Mi piacerebbe scrivere uno script in grado di leggere informazioni come Bundle Identifier o forse il numero di versione dal Info.plist dell'app. Xcode non sembra dare che le informazioni in essa di variabili d'ambiente. C'è un altro modo per farli a sh / bash?
Soluzione
Il comando defaults
in grado di leggere / scrivere a qualsiasi file plist, basta dargli un percorso meno l'estensione .plist
:
$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier
com.apple.Preview
Questo tira il valore CFBundleIdentifier
direttamente dal file Info.plist
del bundle dell'applicazione.
Impostazioni predefinite funziona anche con plists binari senza passaggi aggiuntivi.
Altri suggerimenti
Utilizzando PlistBuddy, un app da Apple, è possibile assegnare la stringa var in questo modo:
#!/bin/sh
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
Dove BUILD_ROOT e INFOPLIST_PATH sono variabili stabiliti dal Xcode se si esegue questo script in una fase di costruzione "Run Script".
Si può solo leggere il file direttamente dal prodotto costruito. Tuttavia, se si guarda il file info.plist sé nell'editor potrete vedere le variabili di shell stessi. Per esempio. il bundle ID viene ha il seguente comando shell:
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
È possibile chiamare ${PRODUCT_NAME:rfc1034identifier}
in qualsiasi script di shell che Xcode corre e deve compilare.
C'è un programma a riga di comando installato sul Mac chiamato PlistBuddy in grado di leggere i valori / scrittura in un plist. Digitare 'uomo PlistBuddy' nel terminale per ottenere maggiori informazioni.
Questo comando ha funzionato per me:
/usr/libexec/PlistBuddy -c 'print ":CFBundleIdentifier"' Info.plist