2016-01-27 10 views
15

Mam obecnie projekt z 3 różnymi wersjami tej samej aplikacji (różne marki i tym podobne), która działa dobrze. Od tego czasu dodałem 3 nowe cele Apple Watch (1 dla każdej "wersji" aplikacji), gdzie 2 z nich odnoszą się do plików w "głównym" celu Apple Watch.Funkcja wstępnej kompilacji zegarka Apple Watch w celu zmiany referencji na module storyboard

Wszystko działa dobrze, o ile pamiętam, aby zmienić odniesienie do modułu dla każdego widoku storyboardu, aby był mapowany do właściwego kontrolera interfejsu w odpowiednim docelowym rozszerzeniu Watchkit.

Pamiętaj jednak, aby zmienić to za każdym razem, gdy potrzebuję uruchomić/zbudować wersję/cel aplikacji, jest to trudne, a nie długoterminowe rozwiązanie.

Utworzyłem następujące polecenie, które chcę uruchomić we właściwym czasie, tak, że zmienia odniesienia do storyboardów przed ich skompilowaniem.

perl -pi.bak -e 's/customModule=\"(.*?)\">/customModule=\"watchMyTarget_Extension\">/g' ${SRCROOT}/watch/Base.lproj/Interface.storyboard 

doszedłem do wniosku, że to pewnie chcesz zresetować zmiany po app został skompilowany, ponieważ nie chcę mieć zmianę pliku dla git narzekać. Dlatego powyższy skrypt tworzy plik .bak. Więc po kompilacji jest zrobione i pakowane/uruchomić na urządzeniu lub cokolwiek, chcę uruchomić

mv ${SRCROOT}/watch/Base.lproj/Interface.storyboard.bak ${SRCROOT}/watch/Base.lproj/Interface.storyboard 

Próbowałem umieszczenie skryptów w docelowej'S (watchTarget nie CelAplikacji) zbudować system, który nie Build->Pre/Post Actions wydaje się mieć jakikolwiek efekt. I próbowałem go włożyć do pewnego stopnia, ale wydawało się, że akcja postu została uruchomiona zanim aplikacja została przekazana do symulatora i tym samym awarię aplikacji ("nie można uruchomić, zobacz logi urządzeń" lub coś w tym stylu).

Więc gdzie, na ziemi, muszę umieścić te skrypty, aby uruchomić je we właściwym czasie w procesie kompilacji?

Odpowiedz

2

należy użyć dodać New Run Script Phase etapami zbudować swoją celu, umieść go przed źródłami Skompiluj

krokach: (od Apple)

  1. W edytorze projektu, wybrać cel, do którego chcesz dodać fazę uruchamiania skryptu uruchamiania .
  2. Kliknij Utwórz fazy u góry edytora projektu.
  3. Wybierz Edytor> Dodaj fazę budowy> Dodaj fazę tworzenia skryptu uruchamiania.
  4. Należy ujawnić sekcję Run Script w edytorze projektu.
  5. Skonfiguruj skrypt w szablonie Uruchom skrypt.
+0

Próbowałem tego bez powodzenia. Muszę go uruchomić przed i po kompilacji.Ponieważ musi zmienić scenariusz zegarka, zanim zacznę budować cel oglądania, a następnie go zmienić po jego utworzeniu – tskulbru

+0

@tskulbru oczyścić, powinieneś zrobić to po archiwum, umieść polecenie porządkowania w post-actions of Archive . – Allen

+0

Próbowałem użyć post-działania kompilacji/archiwum itp. Z mojego głównego schematu budowy aplikacji do czyszczenia, ale z jakiegoś powodu wydawało się, że nie było wystarczająco późno, a zmiany zostały włączone z powrotem do aplikacji zegarka, której instalacja nie powiodła się, ponieważ nie miej poprawne zmiany. – tskulbru

0

Moje rozwiązanie ustawiania nazwy modułu produktu do tej samej wartości, na przykład, xxx_watch_extension jest iść ustawienia kompilacji każdego celu rozszerzenia zegarkowym. Wtedy powinniśmy być w stanie wybrać ten moduł dla niestandardowych klas w scenorysie.

To działa dobrze dla mnie.

Powiązane problemy