Я хотел бы написать script, который может читать информацию типа Bundle Identifier или номер версии из Info.plist приложения. Xcode, похоже, не дает этой информации в переменных среды. Есть ли другой способ получить их в sh/bash?
Как читать информацию plist (идентификатор пакета) из оболочки script
Ответ 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