Условные пользовательские переменные в файле `xcconfig`

#ios #swift #xcode #fastlane #xcconfig

#iOS #swift #xcode #fastlane #xcconfig

Вопрос:

Используя Xcode 8, работающий на macOS Sierra, я пытаюсь объявить условную переменную в xcconfig файле.

В моем проекте используется fastlane match, поэтому в первую очередь я хочу использовать fastlane gym для архивирования своего приложения, но я хочу также иметь возможность выполнять архивирование вручную (в целях тестирования).

Чего я хочу достичь, так это чего-то подобного:

 _ARCHIVING_WITH_CLI = YES // Actually want to check for some fastlane ENV variabel here, not sure how...

#ifdef _ARCHIVING_WITH_CLI
    _PROVISIONING_PROFILE_APP_STORE = sigh_com.mycomp.app_appstore
#else
    _PROVISIONING_PROFILE_APP_STORE = match AppStore com.mycomp.app
#endif

PROVISIONING_PROFILE_SPECIFIER[config=Release] = $(_PROVISIONING_PROFILE_APP_STORE)
  

Но, по-видимому, это неправильный синтаксис. Я пытался искать документацию, но на самом деле ничего не нашел.

  1. Можете ли вы помочь мне с xcconfig синтаксисом?
  2. Можете ли вы помочь мне с проверкой, был ли архив инициирован вручную или через fastlane gym ( xcodebuild CLI)

Ответ №1:

Вот документация, которую вы ищете:https://docs.fastlane.tools/actions /

Вы также можете запустить gym help и посмотреть поддерживаемые параметры. xcconfig аналогичен любому другому параметру в вашем Fastfile:

 gym {
  ...,
  xcconfig: "STRING",
  ...
}
  

Я не уверен, почему вы хотите иметь возможность архивировать вручную после настройки match и gym . Вы должны иметь возможность запускать тот же Fastfile со своего компьютера, match который будет обрабатывать установку вашего сертификата, и вы выполните то же самое.

Смотрите https://codesigning.guide /

Комментарии:

1. Извините за очень поздний ответ. Я думаю, вы неправильно поняли мой вопрос. Я не спрашиваю, как использовать xcconfig из fastlane. На самом деле я не хочу этого делать. Я настроил свой xcconfig как конфигурацию в проекте. Я спрашиваю, как объявить пользовательскую переменную bool внутри xcconfig и использовать этот bool позже в файле.

Ответ №2:

Вы можете устанавливать переменные условно на основе sdk, архитектуры или конфигурации. Формат выглядит следующим образом:

 <FIELD>[<condition_name_1>=<condition_value_1>][<condition_name_2>=<condition_value_2>].. = <Value>
  

где condition_name_* может быть либо sdk / arch / config , для получения подробной информации о возможных значениях вы можете обратиться к официальной документации.

Для вашего сценария, похоже, вы можете отказаться от применения условий, основанных на sdk , или создать пользовательские конфигурации: одну для Fastlane и одну для использования в командной строке / вручную.