Come posso eseguire com.apple.tools.info-plist-utility?
Domanda
Sto usando XCode per creare un'applicazione iPhone, dove mi piacerebbe elaborare esternamente il file plist informazioni nello stesso modo come il passaggio di generazione XCode mostrato di seguito fa
Processing /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist TestAppGen-Info.plist
mkdir /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app
cd /Users/kte/Projects/TestAppGen
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
<com.apple.tools.info-plist-utility> TestAppGen-Info.plist -genpkginfo /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/PkgInfo -expandbuildsettings -format xml -o /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist
Questo estratto dal log di compilazione si riferisce ad un com.apple.tools.info-plist-utility, che ho capito da varie fonti giro per la rete, è un programma di utilità XCode interna.
E 'possibile eseguire il com.apple.tools.info-plist-utility da riga di comando?
Soluzione
È possibile utilizzare uno strumento chiamato PlistBuddy, /usr/libexec/PlistBuddy
, dare un'occhiata alla sua pagina man.
Ma sarà anche necessario per convertire il plist di nuovo in un file plist binario. Questo può essere fatto come questo in uno script di build
plutil -convert binary1 "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
Altri suggerimenti
La risposta "plutil" è un ottimo inizio. Purtroppo il processo di Xcode accumulo fa più al file Info.plist di convertirlo in binario, per esempio sul mio sistema si aggiunge nei campi:
-MinimumOSVersion
-PlatformName
-CFBundleExecutable
-SDKName
-CFBundleResourceSpecification
-CFBundleSupportedPlatforms
Secondo la documentazione di Apple non si dovrebbe impostare alcuni di questi valori da soli:
MinimumOSVersion
MinimumOSVersion (String). Quando tu creare un'applicazione iPhone, Xcode prende atto del sistema operativo di destinazione (come determinato da la selezione SDK Base) come il immobili MinimimOSVersion. Non specificare questa proprietà se stessi nella file Info.plist; è un Sistema-scritta di proprietà. Quando tu pubblicare l'applicazione per l'App Store, il negozio indica l'iPhone il rilascio del sistema operativo su cui l'applicazione può essere eseguito in base a questa proprietà. È equivalente alla Proprietà LSMinimumSystemVersion su Mac OS X.
Sono in esecuzione in tutti i tipi di problemi cercando di ri-firmare la mia applicazione come parte del mio processo di generazione personalizzata.