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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top