Установить значение Info.plist из фазы сборки - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть iOS, для которой я хочу запустить фазу сборки, которая считывает значение из файла JSON, экспортирует его как переменную среды и затем читает его в моем Info.plist.

В настоящее время у меня есть:

enter image description here enter image description here

# Build Scripts/SetAPIVersion
set -e

if ! which jq > /dev/null; then
echo "error: jq is missing. Be sure to git pull `dev-box` and run apply.sh"
exit 1
fi

export API_VERSION =$(cat ../src/version.json | jq .api)

echo "Set API Version to $(API_VERSION)!"

Мое приложение будет скомпилировано, однако значение не установлено. Что я тут не так делаю?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете использовать это:

plutil -replace APIVersion -string <VERSION> <PATH TO INFO>.plist

Также вы можете использовать PlistBuddy:

/usr/libexec/PlistBuddy -c "Set :APIVersion string <VERSION>" <PATH TO INFO>.plist

Если версии являются статическими числами в зависимости от среды, вы можете использовать настройки сборки проекта user defined variable до:

user defined variable`

0 голосов
/ 13 ноября 2018

Интерпретатор оболочки запускается как подпроцесс. Когда она export является переменной окружения, она влияет только на этот процесс интерпретатора оболочки и его подпроцессов, но не влияет на родительский процесс (т. Е. Xcode) и его процессы-братья (другие фазы сборки).

Вы можете заставить фазу сборки сценария оболочки взять входной файл, скажем, Info.plist.in, и создать из него Info.plist. Это преобразовало бы вход к выходу, как вам нравится. Например, он может использовать sed для замены специальной строки значением, которое он должен иметь. Обязательно настройте входы и выходы фазы сборки сценария выполнения соответствующим образом.

В качестве альтернативы, вы можете сделать так, чтобы фаза сборки run-script создала файл заголовка, который определяет макрос, например, api_version.h, который #define s API_VERSION, #include этот файл заголовка в вашем Info.plist, и включил предварительная обработка Info.plist в настройках сборки. Опять же, убедитесь, что входы и выходы фазы сценария выполнения верны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...