2010-12-01 44 views

回答

40

defaults命令可以讀/寫任何plist文件,只是給它一個路徑減去.plist擴展:

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

com.apple.Preview 

這直接從應用程序包的Info.plist文件拉CFBundleIdentifier值。

默認也適用於二進制plists沒有任何額外的步驟。

+3

這是更好的答案(尤其是PlistBuddy不再默認安裝);你應該選擇它。 – Olie 2014-09-22 17:34:03

4

您可以直接從構建的產品中讀取文件。但是,如果您在編輯器中查看info.plist文件本身,您將看到shell變量本身。例如。該包ID是具有以下shell命令:

com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 

可以調用在Xcode中運行的任何shell腳本${PRODUCT_NAME:rfc1034identifier},它應該填充。

+0

雖然我沒有測試過,但這聽起來不錯。缺點是你不回收捆綁ID,但只是它的最後一部分,所以你將不得不在硬編碼「com.mycompanyname」部分... – Dimitris 2010-12-02 01:33:23

3

在Mac上安裝了一個名爲PlistBuddy的命令行程序,可以在plist中讀取/寫入值。在終端輸入'man PlistBuddy'以獲取更多信息。

+0

我已經嘗試PlistBuddy並玩了很多。問題是PlistBuddy可以打印捆綁ID但不返回它(它只返回0或1)。所以作爲一個shell noob我有一些麻煩讓分配給一個變量。不過,我是如何設法使其發揮作用的。我現在會發布我的答案。 – Dimitris 2010-12-02 01:35:09

33

使用PlistBuddy,通過蘋果的應用程序,可以指定字符串VAR是這樣的:

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

凡BUILD_ROOT和INFOPLIST_PATH的變量通過Xcode的設定,如果你運行一個「運行腳本」這個劇本建立階段。

+1

PlistBuddy並不總是存在於系統中。如果您分發腳本,您可以考慮使用默認值,因爲其他答案指出。 – 2014-12-23 22:44:30