web-dev-qa-db-ja.com

シェルスクリプトからplist情報(バンドルID)を読み取る方法

アプリのInfo.plistから、バンドルIDやバージョン番号などの情報を読み取ることができるスクリプトを書きたいのですが。 Xcodeは環境変数にその情報を提供していないようです。それらをsh/bashで取得する他の方法はありますか?

28
Dimitris

defaultsコマンドは、任意のplistファイルの読み取り/書き込みができます。.plist拡張子を除いたパスを指定するだけです。

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

com.Apple.Preview

これにより、アプリケーションバンドルのInfo.plistファイルから直接CFBundleIdentifier値が取得されます。

デフォルトは、追加の手順なしでバイナリplistでも機能します。

47
joemaller

PlistBuddyを使用して、Appleによるアプリは、次のように文字列をvarに割り当てることができます。

#!/bin/sh   
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")

ここで、BUILD_ROOTおよびINFOPLIST_PATHは、「スクリプトの実行」ビルドフェーズでこのスクリプトを実行する場合にXcodeによって設定される変数です。

38
Dimitris

ビルドされた製品から直接ファイルを読み取ることができます。ただし、エディターでinfo.plistファイル自体を見ると、シェル変数自体が表示されます。例えば。バンドルIDには次のシェルコマンドがあります。

com.yourcompany.${PRODUCT_NAME:rfc1034identifier}

Xcodeが実行する任意のシェルスクリプトで${PRODUCT_NAME:rfc1034identifier}を呼び出すことができます。

4
TechZen

MacにインストールされているPlistBuddyというコマンドラインプログラムがあり、plistの値を読み書きできます。ターミナルで「man PlistBuddy」と入力すると、詳細情報が表示されます。

3
donarb

このコマンドは私のために働きました:

/usr/libexec/PlistBuddy -c 'print ":CFBundleIdentifier"' Info.plist
1
djonik1562