Установка значения по умолчанию для каждой сборки в Settings.bundle / Root.plist - PullRequest
0 голосов
/ 17 октября 2019

У меня есть две пользовательских конфигурации сборки development и release с некоторыми значениями. Вот как выглядит мой Development.xcconfig:

//
// Development .xcconfig
//

// Include Pods config.
#include "Pods/Target Support Files/Pods-MyApp/Pods-MyApp.debug.xcconfig"

// Server URL
HOST_NAME = 127.0.0.1:6060
// Use TLS (https, wss)
USE_TLS = NO

// App Settings
APP_NAME = MyApp (test)
APP_BUNDLE_ID = co.my-domain.myapp-test

Я ссылаюсь на эти значения в Info.plist как $(HOST_NAME), и он отлично работает. Но я также хочу выставить эти пользовательские параметры в настройках приложения как DefaultValue. Т.е. я хочу, чтобы приложение использовало localhost:6060 в качестве предпочтения имени хоста по умолчанию, если целью является development, и адрес рабочего хоста, если целью является release.

Предпочтения определены в Settings.bundle/Root.plist. К сожалению, xcode не расширяет ссылки, такие как $(HOST_NAME) в Settings.bundle/Root.plist. Я полагаю, мне нужно написать скрипт сборки для обновления значений. Я знаю, как использовать PlistBuddy для обновления записей в Root.plist. Что я не могу понять, так это как прочитать значения из Info.plist и в какой момент процесса сборки мне следует обновить Root.plist.

Я не могу прочитать Info.plist в начале сборки, потому что значения еще не раскрыты. Имя хоста все еще читается как буквальная строка "$(HOST_NAME)".

Полагаю, что я могу прочитать Info.plist как последний шаг в процессе сборки, а затем обновить "$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH/Settings.bundle/Root.plist", но какой Info.plist прочитать, тот в
"$TARGET_BUILD_DIR/$INFOPLIST_PATH" или одинв "$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Info.plist" ??? Это имеет значение? Они всегда одинаковы? Они оба всегда присутствуют?

Спасибо!

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