Symulator Xcode jest jednym z narzędzi najczęściej używanych przez programistów. Uruchamianie i testowanie aplikacji na symulatorze stało się częścią codziennej rutyny każdego programisty. Zapoznanie się z różnymi opcjami symulatora jest niezbędne dla każdego programisty. Czy wiesz, że możesz tworzyć i konfigurować symulatory również z linii poleceń? W tym poradniku dowiesz się:
- Czym jest symulator
- Wgląd w przydatne opcje symulatora
- Tworzyć i konfigurować symulatory z linii poleceń
- Strumieniować i przechwytywać logi za pomocą linii poleceń
- Tworzyć skrypt Bash, aby zautomatyzować uruchamianie aplikacji na symulatorze w różnych lokalizacjach.
Rozpoczynanie
Pobierz projekt klikając przycisk Pobierz materiały na górze lub na dole tej strony. Otwórz projekt RayWonders. Zbuduj i uruchom.
Ta aplikacja ma dwie zakładki – Zdjęcie i Mapa. Zakładka Zdjęcia pokazuje zdjęcia cudów świata. Dotknięcie zdjęcia powoduje wyświetlenie szczegółowego widoku jego opisu. Zakładka Mapa pokazuje zdjęcia cudów świata jako adnotacje na mapie. Jest to jeden z rzadkich tutoriali raywenderlich.com, w którym nie będziesz modyfikował projektu. Zamiast tego, użyjesz tej aplikacji jako podstawy do nauki różnych opcji symulatora. Zanim wyruszysz w podróż po świecie, musisz zrozumieć, czym jest symulator.
Czym jest symulator?
Symulator jest świetnym narzędziem do symulowania iOS, iPadOS, tvOS i watchOS na Macu. Pomaga on w szybkim prototypowaniu i testowaniu buildów poprzez symulowanie różnych urządzeń. Na bardziej technicznym poziomie, symulator to oddzielna przestrzeń użytkownika działająca na jądrze macOS.
Przestrzeń użytkownika to pamięć systemowa przydzielona do uruchamiania aplikacji, podczas gdy przestrzeń jądra to pamięć systemowa przydzielona do uruchamiania jądra systemu operacyjnego i sterowników urządzeń. Uruchomienie nowego symulatora tworzy oddzielną przestrzeń użytkownika.
Jądro jest podstawowym składnikiem systemu operacyjnego. Ułatwia interakcje pomiędzy komponentami sprzętowymi i programowymi. Odpowiada za zarządzanie sprzętem, alokację pamięci i arbitraż między procesami.
Jeden z tych procesów – Daemon – działa w tle. launchd, cfprefsd, distnoted to niektóre z daemonów systemowych.
Czy uruchamianie aplikacji na urządzeniu i na symulatorze to to samo? Dowiesz się tego w następnej części.
Uruchamianie aplikacji na urządzeniu vs. na symulatorze
Testowanie aplikacji na symulatorze jest bardzo wygodne. Istnieje jednak kilka kluczowych różnic między uruchamianiem aplikacji na urządzeniu i na symulatorze.
Wydajność obliczeniowa
Symulatory współdzielą te same zasoby obliczeniowe z komputerem Mac. Obejmuje to pamięć, procesor i połączenie sieciowe. Natomiast urządzenia fizyczne mają mniej pamięci i mocy obliczeniowej w porównaniu z komputerem Mac. Ponadto sieć na urządzeniu fizycznym może być nieprzewidywalną bestią.
Wyświetlacz
Rozdzielczość i gama kolorów na komputerze Mac i na urządzeniu fizycznym mogą się różnić, co powoduje, że obrazy i tekst są poszarpane. W dalszej części tego podręcznika dowiesz się, jak symulować dokładny rozmiar urządzenia fizycznego.
Ograniczenia sprzętowe
Niektóre komponenty sprzętowe nie są obsługiwane w symulatorze. Należą do nich:
- Bluetooth
- Kamera
- Czujniki ruchu takie jak akcelerometr i żyroskop
- Czujnik zbliżeniowy
Ograniczenia sprzętowe
Kilka frameworków nie jest obsługiwana w symulatorze. Należą do nich:
- ARKit
- HomeKit
- IOSurface
- MessageUI
Aby uzyskać bardziej wyczerpującą listę wszystkich różnic, zapoznaj się z dokumentacją, wybierając Pomoc ▸ Pomoc symulatora w menu symulatora.
Następnie dowiemy się, jak organizować symulatory.
Organizowanie symulatorów za pomocą Xcode
Xcode dostarcza domyślny zestaw symulatorów. Aby wyświetlić listę tych symulatorów, wykonaj następujące kroki:
- Otwórz Xcode.
- Wybierz opcję menu Okno.
- Wybierz menu Urządzenia i symulatory.
- Wybierz zakładkę Symulatory.
Zobaczysz listę symulatorów, które zostały dostarczone z Xcode. Jeśli w przeszłości pobrałeś inne runtime’y, zobaczysz również te powiązane symulatory.
Teraz utworzysz nowy symulator o niestandardowej nazwie.
Postępuj zgodnie z poniższymi krokami:
- Naciśnij przycisk + w lewym dolnym rogu.
- Ustaw nazwę symulatora jako Demo.
- Wybierz iPhone 12 Pro jako typ urządzenia.
- Wybierz iOS 14.2 jako wersję OS.
- Naciśnij Utwórz.
Tworzy to nowy symulator o nazwie Demo, który możesz teraz znaleźć na liście symulatorów.
Zaznacz pole wyboru Show as runtime destination dla symulatora Demo.
To ukrywa symulator. Nie będzie on widoczny na liście symulatorów obok schematu aplikacji.
Kliknij kontrolnie na symulator Demo. Pojawi się kilka opcji, m.in. Usuń i Zmień nazwę.
Śmiało usuń symulator Demo, klikając Usuń. Nie martw się, już wkrótce utworzysz go inną metodą.
Uruchamianie starszych systemów operacyjnych
Czasami będziesz musiał uruchomić swoją aplikację na starszych wersjach systemów operacyjnych.
Możesz pobrać starsze runtimes, wybierając opcję Pobierz więcej runtimes w menu Wersja OS podczas tworzenia nowego symulatora.
Możesz również pobrać więcej runtimes z okna Komponenty. Wybierz opcję Xcode ▸ Preferencje ▸ Komponenty.
W tym oknie wyświetlana jest lista pobranych runtime’ów symulatora, a także innych runtime’ów dostępnych do pobrania.
Następnie poznasz alternatywny sposób tworzenia symulatorów.
Tworzenie symulatorów z menu symulatora
Zbuduj i uruchom.
Gdy symulator jest uruchomiony, wykonaj następujące kroki:
- Wybierz Plik ▸ Nowy symulator z menu symulatora.
- Wprowadź Demo jako nazwę symulatora.
- Wybierz iPhone 12 Pro jako typ urządzenia.
- Wybierz iOS 14.2 jako wersję.
- Kliknij Utwórz.
Otwórz symulator, wykonując następujące kroki:
- Wybierz Plik ▸ Otwórz symulator z menu.
- Wybierz iOS 14.2 run time.
- Wybierz symulator Demo.
To uruchamia symulator Demo.
To było szybkie i łatwe! Następnie dowiesz się o różnych opcjach rozmiaru symulatora.
Porównanie opcji rozmiaru symulatora
Możesz zmienić rozmiar symulatora, klikając i przeciągając z jednego z czterech rogów. Opcje menu Okno zapewniają cztery opcje skalowania.
Rozmiar fizyczny
Rozmiar fizyczny zmienia rozmiar symulatora, aby dopasować go do rzeczywistego rozmiaru urządzenia. To wizualizuje, jak Twoja aplikacja wygląda na różnych rozmiarach ekranu.
Point Accurate
Tryb dokładności punktowej zmniejsza okno tak, że zawartość ma ten sam rozmiar na urządzeniach o różnych współczynnikach skali. W rezultacie obraz na urządzeniu z wyświetlaczem 3x pojawia się w tym samym rozmiarze co na wyświetlaczu 2x.
Pixel Accurate
W tym trybie rozmiar okna zmienia się na taką samą liczbę pikseli jak na fizycznym urządzeniu. Każdy piksel na symulowanym urządzeniu odpowiada jednemu pikselowi na wyświetlaczu komputera Mac. Powoduje to, że symulatory wydają się większe na ekranie, jeśli wyświetlacz komputera Mac ma mniejszą gęstość pikseli niż symulowane urządzenie. Możesz użyć tego trybu do sprawdzenia wyrównania obrazów i kontrolek w aplikacji.
Dopasuj ekran
To zmienia rozmiar symulatora do rozmiaru wyświetlacza Twojego Maca.
Następnie poznasz różne opcje dostępne w symulatorze.
Powolne animacje
Animacje są integralną częścią aplikacji. Zbuduj i uruchom aplikację RayWonders w symulatorze Demo.
Tknij zakładkę Zdjęcia. Następnie stuknij zdjęcie jednego z cudów świata, aby wyświetlić widok ze szczegółami dotyczącymi tego miejsca. Aby zasymulować powolne animacje, wybierz w menu Symulator opcję Debug ▸ Powolne animacje.
Stuknij ponownie zdjęcie. Widok będzie się teraz powoli animował.
Powolne oglądanie animacji może pomóc w uzyskaniu przejrzystości. Dodatkowo, może pomóc w zbadaniu problemów z renderowaniem i wydajnością.
Następnie nauczysz się symulować Dark Mode. Zanim przejdziesz dalej, wyłącz powolne animacje, odznaczając opcję menu Debug ▸ Slow Animations.
Tryb ciemny
Tryb ciemny zapewnia wspaniałe wrażenia podczas oglądania w słabo oświetlonych środowiskach. Symulator udostępnia opcję wyświetlania aplikacji w trybie ciemnym.
Wybierz Cechy ▸ Przełącz wygląd. Spowoduje to przełączenie wyglądu na tryb ciemny. Teraz dotknij karty Mapa w programie RayWonders.
Zauważysz, że mapa zmieniła wygląd na ciemny. Proste, prawda? Jest to wygodny sposób na przetestowanie aplikacji w trybie ciemnym.
Aby zmienić wygląd z powrotem na domyślny, odznacz Cechy ▸ Przełącz wygląd. Aby dowiedzieć się, jak wspierać tryb ciemny, sprawdź Obsługiwanie trybu ciemnego: Adapting You App to Support Dark Mode tutorial.
Następnie dowiesz się, jak symulować powiadomienia push!
Symulacja powiadomień push
Powiadomienia push to świetny sposób, aby powiadomić użytkowników o nowych aktualizacjach treści w Twojej aplikacji. W przeszłości, testowanie powiadomień push było wyzwaniem. Potrzebne było fizyczne urządzenie do testowania powiadomień push. Począwszy od Xcode 11.4, możesz symulować powiadomienia push na symulatorze.
Utwórz plik o nazwie RayWondersPushNotification.apns za pomocą następujących elementów:
{ "Simulator Target Bundle": "com.raywenderlich.RayWonders", "aps": { "alert": { "title": "Hindi language support added!", "body": "Checkout RayWonders in Hindi!" } }}
To jest prosty, widoczny ładunek powiadomienia push z title
i body
. Element Simulator Target Bundle
jest kluczem specjalnym. Określa on identyfikator pakietu aplikacji, która powinna otrzymać powiadomienie.
Przed wypróbowaniem ładunku, musisz najpierw przyznać uprawnienia do powiadamiania w aplikacji.
Prześledź następujące kroki:
- Otwórz RayWonders w symulatorze Demo.
- Tknij ikonę dzwonka w prawym górnym rogu w zakładce Zdjęcia.
- Wybierz Zezwalaj w pytaniu o uprawnienia do powiadomień.
- Wybierz Urządzenie ▸ Dom z menu Symulator, aby umieścić aplikację w tle.
Następnie przeciągnij i upuść plik RayWondersPushNotification.apns na symulator Demo.
Ta-da! Pojawiło się widoczne powiadomienie push. To było proste! Należy pamiętać, że symulator może jedynie symulować powiadomienie push. Aby przetestować rzeczywiste powiadomienie push otrzymane z serwera powiadomień Apple push, potrzebne jest fizyczne urządzenie.
Aby dowiedzieć się więcej o powiadomieniach push, przeczytaj ten Samouczek powiadomień push: Getting Started.
Następnie dowiesz się, jak powiększać.
Powiększanie i pomniejszanie
Otwórz RayWonders w symulatorze. Przejdź do zakładki Mapa. Mapa jest wyśrodkowana i powiększona na jednym z cudów świata. Gdzie są inne cuda świata?
Będziesz musiał zmniejszyć powiększenie, aby zobaczyć widok świata. Kliknij i przeciągnij, trzymając wciśnięty klawisz Option.
Klikanie i przeciąganie jest świetne, ale szybko może stać się męczące. Następnie poznasz szybszy sposób przechodzenia do lokalizacji.
Symulacja lokalizacji
Symulator zapewnia łatwy sposób symulowania lokalizacji. Najpierw należy nadać uprawnienia do lokalizacji w programie RayWonders.
Postępuj zgodnie z poniższymi krokami:
- Otwórz program RayWonders w symulatorze i przełącz się na kartę Mapa.
- Naciśnij przycisk Uruchom usługi lokalizacyjne na karcie Mapa.
- Zaznacz uprawnienie Allow While Using App.
Teraz, aby zasymulować lokalizację:
- Wybierz Funkcje ▸ Lokalizacja ▸ Lokalizacja niestandardowa z menu Symulatora.
- Wprowadź 41.8902142 jako szerokość geograficzną i 12.4900422 jako długość geograficzną.
- Kliknij OK.
To przeniesie Cię bezpośrednio do Koloseum na mapie – to Twoja najszybsza podróż w historii!
Jednakże, wprowadzanie współrzędnych dla każdej lokalizacji do symulacji jest dość pamięciożerne – to znaczy Twojej pamięci – zadanie. W dalszej części artykułu poznasz łatwiejsze rozwiązanie tego problemu.
Współdzielenie lokalizacji z aplikacji Mapy
Aplikacja Mapy w systemie macOS zapewnia łatwy sposób udostępniania lokalizacji symulatorowi.
Prześledź następujące kroki:
- Otwórz aplikację Mapy.
- Wpisz Machu Picchu w polu wyszukiwania.
- Kliknij przycisk Udostępnij obok pola wyszukiwania.
- Wybierz Symulator z listy rozwijanej.
- W podpowiedzi lokalizacji wybierz Demo jako symulator.
- Kliknij Wyślij.
Jesteś teraz w Machu Picchu w widoku mapy symulatora.
Gratulacje! Właśnie ustanowiłeś rekord świata jako najszybszy podróżnik z Koloseum do Machu Picchu! :]
Aby dowiedzieć się więcej na temat obsługi lokalizacji w Twojej aplikacji, sprawdź MapKit i Core Location.
Teraz nadszedł czas, aby wstrząsnąć sprawami.
Symulacja gestu potrząsania
Gesty potrząsania są świetnymi wskazówkami, aby skłonić użytkownika do przekazania informacji zwrotnej w aplikacji. Ale jak można potrząsnąć symulatorem? Na szczęście, rygorystyczne potrząsanie komputerem Mac nie jest rozwiązaniem. Symulator zapewnia łatwy sposób.
Otwórz aplikację RayWonders w symulatorze demonstracyjnym. Z menu Symulator wybierz opcję Urządzenie ▸ Potrząśnij.
Symuluje to gest potrząsania.
RayWonders wykrywa potrząśnięcie i wyświetla alert dla użytkownika. Możesz wykrywać i obsługiwać gesty wstrząsów w swojej aplikacji, implementując metodę motionEnded(_:with:)
. Aby dowiedzieć się więcej, sprawdź dokumentację Apple.
Następnie dowiesz się, jak symulować ostrzeżenie o pamięci.
Symulacja ostrzeżenia o pamięci
iOS wysyła ostrzeżenie do aplikacji, gdy jej użycie pamięci zbliża się do górnego limitu na urządzeniu. Aplikacja musi zareagować, usuwając dane z pamięci podręcznej, którą można później ponownie utworzyć.
Otwórz RayWonders na symulatorze Demo. Z menu wybierz Debug ▸ Symuluj ostrzeżenie o pamięci.
To symuluje ostrzeżenie o pamięci.
RayWonders pokazuje alert. Możesz dowiedzieć się więcej o obsłudze ostrzeżeń o pamięci w tej dokumentacji Responding to Memory Warnings Apple.
Do tej pory widziałeś kilka przydatnych opcji symulatora. Jest jeszcze kilka innych, które nie zostały omówione w tym poradniku. Powinieneś je sprawdzić, w zależności od potrzeb Twojej aplikacji. Niektóre z tych opcji obejmują:
- Symuluj synchronizację iCloud używając Features ▸ Trigger iCloud Sync.
- Symuluj autoryzację Apple Pay używając Features ▸ Authorize Apple Pay.
- Wyzwalaj Siri używając Device ▸ Siri.
- Sprawdź dziennik systemowy używając Debug ▸ Otwórz dziennik systemowy.
Następnie nauczymy się interakcji z symulatorami za pomocą wiersza poleceń.
Organizowanie symulatorów za pomocą wiersza poleceń
Do tej pory tworzyliśmy symulatory i zarządzaliśmy nimi za pomocą Xcode. Ponadto, poznaliśmy różne opcje menu symulatora. Teraz nauczymy się zarządzać i używać symulatorów z wiersza poleceń.
Otwórz Terminal. Wpisz następującą komendę:
xcrun simctl --help
i naciśnij Enter.
Opcja pomocy dostarcza listę wszystkich podpoleceń dostępnych przy użyciu polecenia simctl.
Simctl jest narzędziem pomagającym w zarządzaniu i programowym interfejsie z symulatorem. Dostęp do simctl można uzyskać za pomocą narzędzia wiersza poleceń xcrun.
Poznamy teraz kilka z tych podpoleceń. Wykonaj następujące polecenia:
xcrun simctl list
Komenda list pokazuje listę wszystkich dostępnych urządzeń i runtime’ów.
Pokazuje również aktualny stan urządzeń, czy jest to Booted czy Shutdown.
Następnie nauczymy się tworzyć i uruchamiać symulator z wiersza poleceń.
Tworzenie symulatora z wiersza poleceń
Przed utworzeniem nowego symulatora należy usunąć symulator demonstracyjny utworzony za pomocą Xcode. Wpisz następujące:
xcrun simctl delete Demo
Komenda delete identyfikuje symulator i usuwa go. Teraz utwórz nowy symulator z wiersza poleceń.
Wprowadź następujące elementy:
xcrun simctl create Demo "iPhone 12 Pro" "iOS14.2"
Polecenie create przyjmuje typ urządzenia i czas działania i tworzy symulator. To tworzy symulator iPhone’a 12 Pro z runtime’em iOS 14.2.
Teraz Terminal pokazuje unikalny identyfikator nowego urządzenia.
Wprowadź następujące polecenie:
xcrun simctl boot Demo
Uruchamia symulator Demo. Domyślnie jest on w stanie Shutdown.
Teraz zainstaluj RayWonders za pomocą wiersza poleceń. Najpierw potrzebny będzie pakiet aplikacji. Wykonaj następujące kroki:
- Otwórz nawigator projektu i wybierz aplikację RayWonders.app znajdującą się w folderze Products.
- Kliknij prawym przyciskiem myszy i wybierz opcję Show in Finder.
- Kopiuj RayWonders do swojego katalogu domowego.
Otwórz Terminal i przejdź do katalogu domowego, wpisując następujące polecenie:
cd ~
Następnie wykonaj następujące polecenie:
xcrun simctl install Demo RayWonders.app
Komenda install
instaluje RayWonders na symulatorze. Świetna robota!
Możesz nawet uruchomić aplikację używając simctl. Wpisz następujące polecenie:
xcrun simctl launch Demo com.raywenderlich.RayWonders
Komenda launch przyjmuje jako parametr identyfikator pakietu aplikacji. RayWonders uruchamia się w symulatorze Demo.
Gratulacje! Stworzyłeś, uruchomiłeś, zainstalowałeś i uruchomiłeś symulator z wiersza poleceń. Oto kilka innych opcji, które możesz wypróbować:
- terminate: To kończy aplikację przy użyciu identyfikatora pakietu.
- erase: To wymazuje zawartość urządzenia.
- uninstall: Powoduje odinstalowanie aplikacji. Będziesz musiał podać identyfikator pakietu aplikacji.
Następnie poznasz kilka fajnych poleceń, które są dostępne dla twojej aplikacji.
Zrzuty ekranu
Zrzuty ekranu twojej aplikacji mogą być przydatne w kilku scenariuszach. Na przykład, będziesz potrzebował zrzutów ekranu podczas składania swojej aplikacji w AppStore.
Wprowadź następujące polecenie:
xcrun simctl io Demo screenshot screenshot.png --type="png"
To robi zrzut ekranu bieżącego ekranu i zapisuje go do pliku screenshot.png. Oprócz png, screenshot
polecenie obsługuje inne formaty plików, takie jak TIFF, BMP, GIF i JPEG.
Zrzut ekranu może pokazać, jak wygląda Twoja aplikacja, a obraz jest wart tysiąca słów. Jednak wideo jest warte o wiele więcej :]
Nagrywanie wideo
Możesz nagrywać wideo z twojej aplikacji używając simctl. Aby rozpocząć nagrywanie, wprowadź następującą komendę:
xcrun simctl io Demo recordVideo Demo.mov --codec="h264"
Interakcja z RayWonders na symulatorze. Naciśnij Control-C w terminalu, gdy skończysz. To zapisuje wideo w pliku Demo.mov.
Dodatkowo, podczas nagrywania możesz określić żądany kodek. Domyślnym kodekiem jest hevc.
Komenda recordVideo
pozwala uniknąć używania odtwarzacza QuickTime do nagrywania wideo aplikacji.
Dostosowywanie paska stanu
Sprawdź pasek stanu aplikacji w symulatorze. Możesz zobaczyć, że bateria jest pełna, urządzenie ma najlepszy sygnał, a czas na symulatorze to Twój lokalny czas Mac. Co zrobić, jeśli chcesz to zmienić?
Wprowadź następujące polecenie w Terminalu:
xcrun simctl status_bar Demo override \ --dataNetwork 4g --cellularBars 2 --batteryState charging \ --batteryLevel 25 --time 12:05
To nadpisuje pasek stanu, aby ustawić:
- Sieć danych jako 4G
- Sygnał komórkowy na dwa paski
- Stan baterii na ładowanie, a poziom baterii na 25%
- Czas na symulatorze na 12:05
Gdy zrobisz to we własnym projekcie, możesz ustawić informacje na pasku statusu na co tylko chcesz.
Komenda status_bar
może być naprawdę przydatna, gdy chcesz dostosować wygląd zrzutów ekranu i filmów w swojej aplikacji.
Kiedy skończysz, przywróć pasek stanu do domyślnego wyglądu wpisując następujące polecenie:
xcrun simctl status_bar Demo clear
Debugowanie i diagnozowanie
Simctl dostarcza również kilka poleceń, które pomagają w debugowaniu i diagnozowaniu problemów.
Powróć do Terminala i wpisz następujące polecenia:
xcrun simctl get_app_container Demo com.raywenderlich.RayWonders
get_app_container
get_app_container
get_app_container
Wypisuje ścieżkę do pakietu aplikacji.
Możesz sprawdzić dane wewnątrz app container używając tej ścieżki. Dodatkowo, logi z symulatora mogą być bardzo przydatne podczas debugowania problemów.
Teraz wpisz następujące polecenie w Terminalu:
xcrun simctl spawn Demo log stream
To rozpoczyna strumieniowe przesyłanie wszystkich logów z symulatora Demo.
Jednakże może to być zbyt dużo danych do sprawdzenia. Naciśnij Control-C, aby zatrzymać strumień.
Spróbuj następującego rozwiązania:
xcrun simctl spawn Demo log stream | grep com.raywenderlich.RayWonders
To filtruje logi i wyświetla tylko te z RayWonders.
W miarę interakcji z aplikacją zobaczysz więcej logów wyświetlanych w terminalu. Logi te mogą być bardzo przydatne przy zgłaszaniu błędów lub przekazywaniu informacji zwrotnych do Apple.
Wpisz następujące polecenia:
xcrun simctl diagnose
Komenda diagnose
zbiera mnóstwo danych, w tym logi i awarie. Generuje również pliki, które mogą pomóc Apple w usuwaniu błędów. Domyślnie, zbierane są logi dla uruchomionego urządzenia. Podając UDID urządzenia, możesz ograniczyć zbieranie logów do tego konkretnego urządzenia.
Teraz stałeś się ekspertem od linii poleceń symulatora! Możesz pójść o krok dalej, automatyzując typowe czynności za pomocą skryptów Bash.
Automatyzacja za pomocą skryptu Bash
Teraz utworzysz skrypt do sklonowania symulatora i uruchomienia RayWonders w innym środowisku.
Po pierwsze, otwórz Terminal i wpisz następujące polecenie:
touch sim_utility.sh
Tworzy to nowy plik o nazwie sim_utility. Rozszerzenie .sh oznacza, że jest to skrypt powłoki.
Następnie uruchom:
chmod +x sim_utility.sh
To czyni sim_utility.sh wykonywalnym, więc możesz go uruchomić.
Otwórz sim_utility.sh w edytorze i dodaj następujące informacje:
#!/bin/bash#1COMMAND="$1"SIMULATOR_NAME="$2"#2get_id_of_simulator() { #TODO}get_status_of_simulator() { #TODO}launch() { #TODO}#3case $COMMAND in"launch") launch "$3" "$4" "$5" ;;*) launch_help exit 1 ;;esac
Oto, co się dzieje:
- Skrypt przyjmuje nazwę polecenia i nazwę symulatora jako parametry wiersza poleceń.
-
get_id_of_simulator
get_status_of_simulator
ilaunch
to puste stuby, które zaimplementujesz w następnej kolejności. - Skrypt obsługuje obecnie jedno polecenie o nazwie
launch
. Polecenielaunch
przyjmuje trzy dodatkowe parametry, które wkrótce zaimplementujesz.
W get_id_of_simulator
, zastąp #TODO
następującym:
xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH-2 )}'
get_id_of_simulator
przeszukuje listę symulatorów, aby dopasować nazwę podaną jako parametr. Jeśli znajdzie dopasowanie, operacja substring uzyskuje unikalny identyfikator symulatora.
W metodzie get_status_of_simulator
zastąp #TODO
następującym:
xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH - 2 )}'
get_status_of_simulator
wyszukuje na liście urządzeń symulator o pasującej nazwie. Jeśli znajdzie dopasowanie, pobiera status symulatora – uruchomiony lub wyłączony. Użyjesz tego w launch
.
Implementing Launch
W launch
, zastąp #TODO
następującym:
#1BUNDLE_ID="$1"LOCALE="$2"LANGUAGE="$3"CLONE_NAME="$LOCALE"#2SIMULATOR_ID=$(get_id_of_simulator)if ; then echo "No device matching the name: $SIMULATOR_NAME" returnfiecho "Simulator id: $SIMULATOR_ID"echo "Bundle id: $BUNDLE_ID"echo "Locale: $LOCALE"#3SIMULATOR_STATUS=$(get_status_of_simulator)echo "Simulator Status: $SIMULATOR_STATUS"if ; then echo "Making sure the device is shutdown first..." xcrun simctl shutdown "$SIMULATOR_NAME"fi#4echo "Cloning the device with name $LOCALE..."xcrun simctl clone "$SIMULATOR_NAME" "$CLONE_NAME"#5echo "Booting device..."xcrun simctl boot "$SIMULATOR_NAME"xcrun simctl boot "$CLONE_NAME"#6echo "Launching app..."xcrun simctl launch "$SIMULATOR_NAME" "$BUNDLE_ID"#7xcrun simctl launch "$CLONE_NAME" "$BUNDLE_ID" -AppleLocale "$LOCALE" \ -AppleLanguages "($LANGUAGE)"
Zapisz plik. Oto, co to robi, krok po kroku. To:
- Podaje dodatkowe parametry do
launch
, w tym identyfikator pakietu aplikacji, locale i język, w którym chcesz uruchomić swoją aplikację. Deklaruje zmienną lokalnąCLONE_NAME
, która jest nazwą sklonowanego urządzenia. W tym przypadku nazwą sklonowanego urządzenia jest locale określone przez użytkownika; - Wyszukuje identyfikator symulatora, wywołując
get_id_of_simulator
. Następnie zapisuje wynik wSIMULATOR_ID
. Jeśli nie ma pasującego symulatora, kończy program; - Wyszukuje status symulatora, wywołując
get_status_of_simulator
. Jeśli status wynosiBooted
, uruchamia polecenieshutdown
, aby go wyłączyć. Aby urządzenie mogło zostać sklonowane, musi zostać wyłączone; - Klonuje symulator za pomocą polecenia
clone
; - Bootuje zarówno oryginalny symulator, jak i sklonowany symulator za pomocą polecenia
boot
; - Uruchamia aplikację na oryginalnym symulatorze za pomocą komendy
launch
; - Uruchamia aplikację za pomocą komendy
launch
na sklonowanym symulatorze. Określa ona locale i język, w którym aplikacja ma być uruchamiana.
Uruchamianie RayWonders w innym locale
Otwórz Terminal i wykonaj następujące polecenia:
./sim_utility.sh launch Demo com.raywenderlich.RayWonders hi_IN hi
RayWonders uruchamia się w języku hindi na sklonowanym symulatorze o nazwie hi_IN.
Nie musisz już przechodzić do ustawień i przełączać języka urządzenia, aby przetestować swoją aplikację. Teraz możesz zobaczyć swoją aplikację w wielu językach jednocześnie. Świetna robota!
xcrun simctl list | grep Demo
w terminalu. Usuń wszystkie zduplikowane symulatory i spróbuj ponownie.RayWonders obsługuje również kilka innych języków. Wykonaj następujące polecenie:
./sim_utility.sh launch Demo com.raywenderlich.RayWonders ja_Jp ja
RayWonders uruchamia się teraz w języku japońskim na nowym symulatorze.
Jako zabawne wyzwanie, zaimplementuj dwie dodatkowe komendy w skrypcie sim_utility.
- Cleanup: To usuwa symulator podany jako nazwa symulatora.
- Help: To drukuje menu wszystkich poleceń obsługiwanych przez skrypt.
Ostateczną wersję skryptu z zaimplementowanymi wszystkimi tymi opcjami znajdziesz w folderze Scripts w pobranych materiałach.
Where to Go From Here?
Pobierz projekt, klikając przycisk Download Materials na górze lub na dole tej strony.
W tym tutorialu poznałeś mnóstwo przydatnych opcji symulatora i wiersza poleceń. Aby dowiedzieć się więcej, sprawdź te filmy WWDC:
- Uzyskanie jak najwięcej z Simulatora
- Zostań ekspertem Simulatora
Mam nadzieję, że podobał Ci się ten tutorial. Jeśli masz jakieś pytania lub komentarze, dołącz do dyskusji na forum poniżej.
raywenderlich.com Weekly
Biuletyn raywenderlich.com to najprostszy sposób, aby być na bieżąco ze wszystkim, co musisz wiedzieć jako programista mobilny.
Zdobądź cotygodniowy przegląd naszych tutoriali i kursów, a jako bonus otrzymasz darmowy, dogłębny kurs e-mailowy!
Średnia ocena
5/5
Dodaj ocenę dla tej zawartości
Zaloguj się, aby dodać ocenę