2010-12-01 101 views

答えて

40

defaultsコマンドはちょうどそれをパスマイナス.plist拡張子を付け、任意のplistファイルへの読み取り/書き込みができます。

$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier 

com.apple.Preview 

をこれは、アプリケーションバンドルのInfo.plistファイルから直接CFBundleIdentifier値を引きます。

デフォルトはバイナリplistでも動作します。

+3

これはPlistBuddyがデフォルトではインストールされていないため、より良い答えです(特に。それを選択する必要があります。 – Olie

+13

また、既定値は相対パスではなくフルパスを必要としていることに注意してください。現在読んでいるplistファイルのディレクトリにいてもそうではありません。 – Olie

+6

だから、あなたはいくつかのディレクトリの中でそれをするとき、あなたは使用することができます:defaults write $ PWD/SomeMyDirectory/Info.plist CFBundleIdentifier "com.apple.Preview" – iVader

4

ビルド済みの製品から直接ファイルを読むことができます。しかし、エディタでinfo.plistファイル自体を見ると、シェル変数自体が表示されます。例えば。

com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 

あなたはXcodeのは、実行されるすべてのシェルスクリプトで${PRODUCT_NAME:rfc1034identifier}を呼び出すことができ、それが移入する必要がありますバンドルIDは、次のシェルコマンドを持っています。

+0

私はそれをテストしていないが、それは良い音だ。欠点はバンドルIDを返さないことですが、最後の部分だけを取得するので、 "com.mycompanyname"部分をどこかでハードコードする必要があります。 – Dimitris

3

MacにはPlistBuddyというコマンドラインプログラムがインストールされており、plistの値を読み書きできます。ターミナルに 'man plistBuddy'と入力すると詳しい情報が得られます。 PlistBuddy、このようVARために文字列を代入することが可能であるアップル社によってアプリを使用

+0

PlistBuddyを試してみました。 PlistBuddyはバンドルIDを出力できますが、返すことはできません(0または1のみを返す)。だから、シェルのnoobである私は変数に割り当てられて取得するいくつかの問題があった。しかし、どうやってそれを稼働させることができたのか。私は今私の答えを掲示します。 – Dimitris

33

#!/bin/sh 
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}") 
あなたが「スクリプトの実行」で、このスクリプトを実行する場合BUILD_ROOTとINFOPLIST_PATHは、変数のXcodeで設定されている

構築段階。

+1

PlistBuddyは常にシステムに存在するとは限りません。スクリプトを配布する場合、他の答えが指摘しているように、デフォルトの使用を検討することができます。 –

関連する問題