Comment puis-je exécuter com.apple.tools.info-plist-utilité?
Question
J'utilise XCode pour construire une application iPhone, où je voudrais traiter à l'extérieur le fichier plist info de la même manière que l'étape de construction de XCode ci-dessous fait
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
Cet extrait du journal de la construction fait référence à un com.apple.tools.info-plist-utilité, que je déduis de diverses sources autour du filet, est un utilitaire XCode interne.
Est-il possible d'exécuter le com.apple.tools.info-plist-utilitaire à partir d'une ligne de commande?
La solution
Vous pouvez utiliser un outil appelé PlistBuddy, /usr/libexec/PlistBuddy
, jetez un oeil à sa page de manuel.
Mais vous aurez aussi besoin de convertir le plist en un fichier plist binaire. Cela peut se faire comme ça dans un script de compilation
plutil -convert binary1 "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
Autres conseils
La réponse « plutil » est un bon début. Malheureusement, le processus de construction de Xcode fait plus dans le fichier Info.plist que convertir en binaire, par exemple sur mon système, il ajoute dans les domaines:
-MinimumOSVersion
-PlatformName
-CFBundleExecutable
-SDKName
-CFBundleResourceSpecification
-CFBundleSupportedPlatforms
D'après le documentation Apple vous n'êtes pas censé mettre en place certaines de ces valeurs vous-même:
MinimumOSVersion
MinimumOSVersion (String). Lorsque vous construire une application iPhone, Xcode note le système d'exploitation cible (tel que déterminé par la sélection du SDK de base) comme propriété MinimimOSVersion. Ne pas préciser cette propriété vous-même dans le fichier Info.plist; c'est un système écrit propriété. Lorsque vous publier votre application à l'App Store, le magasin indique l'iPhone OS version sur laquelle votre application peut fonctionner à partir de cette propriété. Il est équivalente à la LSMinimumSystemVersion propriété sur Mac OS X.
Je suis en cours d'exécution dans toutes sortes de problèmes en essayant de re-signer ma demande dans le cadre de mon processus de construction personnalisé.