В настоящее время у меня есть проект с 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 началось до того, как приложение было перенесено на симулятор и, таким образом, сбой приложения ( "не удалось запустить, смотрите журналы устройств" или что-то в этом роде).
Итак, где же мне нужно поставить эти сценарии, чтобы они запускались в нужное время в процессе сборки?