Как прочитать информацию о plist (идентификатор пакета) из сценария оболочки - PullRequest
25 голосов
/ 01 декабря 2010

Я хотел бы написать скрипт, который может читать информацию, такую ​​как идентификатор пакета или, возможно, номер версии из Info.plist приложения.Xcode, похоже, не предоставляет эту информацию в своих переменных окружения.Есть ли другой способ получить их в sh / bash?

Ответы [ 5 ]

45 голосов
/ 15 июля 2013

Команда defaults может читать / записывать в любой файл plist, просто укажите путь минус расширение .plist:

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

com.apple.Preview

Это извлекает значение CFBundleIdentifier непосредственно из пакета приложения.Info.plist файл.

По умолчанию также работает с двоичными списками без каких-либо дополнительных шагов.

38 голосов
/ 02 декабря 2010

Используя PlistBuddy, приложение от Apple, можно присвоить строку переменной var следующим образом:

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

Где BUILD_ROOT и INFOPLIST_PATH - переменные, установленные Xcode, если вы запускаете этот скрипт в «Run Script"Фаза сборки.

4 голосов
/ 01 декабря 2010

Вы можете просто прочитать файл прямо со встроенного продукта. Однако, если вы посмотрите на сам файл info.plist в редакторе, вы увидите сами переменные оболочки. Например. Идентификатор пакета имеет следующую команду оболочки:

com.yourcompany.${PRODUCT_NAME:rfc1034identifier}

Вы можете вызвать ${PRODUCT_NAME:rfc1034identifier} в любом скрипте оболочки, который запускает Xcode, и он должен заполниться

3 голосов
/ 02 декабря 2010

На Mac установлена ​​программа командной строки под названием PlistBuddy, которая может читать / записывать значения в plist.Для получения дополнительной информации введите «man PlistBuddy» в Терминале.

0 голосов
/ 21 мая 2019

Эта команда работала для меня:

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