Apple Watch - предварительная сборка, чтобы изменить раскладку customModule
В настоящее время у меня есть проект с 3 различными версиями одного и того же приложения (с другим брендингом и т.д.), который работает отлично. С тех пор я добавил 3 новых целевых показателя Apple Watch (1 для каждой версии приложения), где 2 из них ссылаются на файлы в "главном" объекте Apple Watch.
Все работает нормально, пока я не помню, чтобы изменить ссылку на модуль для каждого вида раскадровки, чтобы он отображался на правильный контроллер интерфейса в соответствующей целевой расширительной линии для сторожевого таймера.
Однако, не забывая переключать это каждый раз, когда мне нужно запускать/строить версию/цель приложения, это боль, а не долгосрочное решение.
Я создал следующую команду, которую я хочу запустить в нужное время, так что она меняет ссылки на раскадровку перед ее компиляцией.
perl -pi.bak -e 's/customModule=\"(.*?)\">/customModule=\"watchMyTarget_Extension\">/g' ${SRCROOT}/watch/Base.lproj/Interface.storyboard
Я также пришел к выводу, что, возможно, мне захочется изменить reset после того, как приложение было скомпилировано, так как я не хочу, чтобы файл сменился на git, чтобы жаловаться. Именно поэтому вышеупомянутый script создает файл .bak. Поэтому после того, как компиляция выполнена и упакована/запущена на устройстве или что-то еще, я хочу запустить
mv ${SRCROOT}/watch/Base.lproj/Interface.storyboard.bak ${SRCROOT}/watch/Base.lproj/Interface.storyboard
Я попытался разместить сценарии в схеме сборки target (watchTarget, а не appTarget), Build->Pre/Post Actions
, которая, похоже, не имеет никакого эффекта. И я попытался поместить его в Run->Pre/Post Actions
, который работал в некоторой степени, но казалось, что действие post началось до того, как приложение было перенесено на симулятор и, таким образом, сбой приложения ( "не удалось запустить, смотрите журналы устройств" или что-то в этом роде).
Итак, где же мне нужно поставить эти сценарии, чтобы они запускались в нужное время в процессе сборки?
Ответы
Ответ 1
вам следует использовать команду "Добавить запуск" Script "Фаза" в целевые фазы сборки, поместить ее перед источниками компиляции
Шаги: (от Apple)
- В редакторе проекта выберите цель, к которой вы хотите добавить
выполните фазу сборки Script.
- Нажмите "Построить фазы" в верхней части редактора проекта.
- Выберите "Редактор" > "Добавить этап сборки" > "Добавить запуск" Script "Фаза сборки".
- Откроем раздел "Выполнить" Script в редакторе проекта.
- Настройте Script в шаблоне Run Script.
Ответ 2
Мое решение состоит в том, чтобы перейти к настройкам сборки для каждой цели расширения часового пояса, установив имя Product module name на одно значение, например xxx_watch_extension strong > . Затем мы должны иметь возможность выбрать этот модуль для пользовательских классов на раскадровке.
Это отлично работает для меня.