Подтвердить что ты не робот

Как читать информацию plist (идентификатор пакета) из оболочки script

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

4b9b3361

Ответ 1

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

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

com.apple.Preview

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

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

Ответ 2

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

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

Где BUILD_ROOT и INFOPLIST_PATH являются переменными, заданными Xcode, если вы запустите этот script в фазе сборки "Запуск Script".

Ответ 3

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

com.yourcompany.${PRODUCT_NAME:rfc1034identifier}

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

Ответ 4

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

Ответ 5

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

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