У меня есть две пользовательских конфигурации сборки 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"
??? Это имеет значение? Они всегда одинаковы? Они оба всегда присутствуют?
Спасибо!