Xcode Simulator App Advanced (Polski)

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.

Zaawansowany symulator

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.

Architektura symulatora

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ą.

Wydajność urządzenia a wydajność komputera Mac

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:

  1. Otwórz Xcode.
  2. Wybierz opcję menu Okno.
  3. Wybierz menu Urządzenia i symulatory.
  4. Urządzenia i symulatory w Xcode

  5. 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.

Twórz symulator z Xcode

Postępuj zgodnie z poniższymi krokami:

  1. Naciśnij przycisk + w lewym dolnym rogu.
  2. Ustaw nazwę symulatora jako Demo.
  3. Wybierz iPhone 12 Pro jako typ urządzenia.
  4. Wybierz iOS 14.2 jako wersję OS.
  5. 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.

Opcja Hide simulator

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ę.

Menu kontekstowe symulatora Usuń

Ś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.

Menu Pobierz runtimes

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.

Okno komponentów symulatora

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:

  1. Wybierz Plik ▸ Nowy symulator z menu symulatora.
  2. Utwórz symulator z menu

  3. Wprowadź Demo jako nazwę symulatora.
  4. Wybierz iPhone 12 Pro jako typ urządzenia.
  5. Wybierz iOS 14.2 jako wersję.
  6. Kliknij Utwórz.

Otwórz symulator, wykonując następujące kroki:

  1. Wybierz Plik ▸ Otwórz symulator z menu.
  2. Wybierz iOS 14.2 run time.
  3. Wybierz symulator Demo.

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

Symulator w trybie rozmiaru fizycznego

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

Symulator w trybie dokładności punktowej

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

Symulator w trybie 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

Symulator w trybie dopasowania

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.

Opcja menu Powolne animacje

Stuknij ponownie zdjęcie. Widok będzie się teraz powoli animował.

Cuda Raya na symulatorze z wolną animacją

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.

Opcja menu Przełącz wygląd

Wybierz Cechy ▸ Przełącz wygląd. Spowoduje to przełączenie wyglądu na tryb ciemny. Teraz dotknij karty Mapa w programie RayWonders.

Mapa RayWonders Tryb ciemny

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.

Grant notification permission

Prześledź następujące kroki:

  1. Otwórz RayWonders w symulatorze Demo.
  2. Tknij ikonę dzwonka w prawym górnym rogu w zakładce Zdjęcia.
  3. Wybierz Zezwalaj w pytaniu o uprawnienia do powiadomień.
  4. Wybierz Urządzenie ▸ Dom z menu Symulator, aby umieścić aplikację w tle.
  5. Opcja menu Home w symulatorze

Następnie przeciągnij i upuść plik RayWondersPushNotification.apns na symulator Demo.

Symulacja powiadomienia push za pomocą przeciągania i upuszczania

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.

Powiększanie i przesuwanie w symulatorze

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.

Nadawanie uprawnień do lokalizacji

Postępuj zgodnie z poniższymi krokami:

  1. Otwórz program RayWonders w symulatorze i przełącz się na kartę Mapa.
  2. Naciśnij przycisk Uruchom usługi lokalizacyjne na karcie Mapa.
  3. Zaznacz uprawnienie Allow While Using App.

Teraz, aby zasymulować lokalizację:

  1. Wybierz Funkcje ▸ Lokalizacja ▸ Lokalizacja niestandardowa z menu Symulatora.
  2. Menu Symuluj lokalizację

  3. Wprowadź 41.8902142 jako szerokość geograficzną i 12.4900422 jako długość geograficzną.
  4. Kliknij OK.
  5. Symuluj współrzędne lokalizacji

To przeniesie Cię bezpośrednio do Koloseum na mapie – to Twoja najszybsza podróż w historii!

Koloseum na mapie

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.

Symuluj lokalizację z aplikacji Mapy

Prześledź następujące kroki:

  1. Otwórz aplikację Mapy.
  2. Wpisz Machu Picchu w polu wyszukiwania.
  3. Kliknij przycisk Udostępnij obok pola wyszukiwania.
  4. Wybierz Symulator z listy rozwijanej.
  5. W podpowiedzi lokalizacji wybierz Demo jako symulator.
  6. Opcja menu Symulator w Mapach

  7. Kliknij Wyślij.

Jesteś teraz w Machu Picchu w widoku mapy symulatora.

Lokalizacja zasymulowana w RayWonders

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.

Opcja menu Potrząśnij

Symuluje to gest potrząsania.

Trząsanie wykrywane w RayWonders

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.

Opcja menu Ostrzeżenie o pamięci

To symuluje ostrzeżenie o pamięci.

Ostrzeżenie o pamięci w RayWonders

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.

Komenda pomocy 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.

Komenda simctl List

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.

Komenda simctl Create

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:

  1. Otwórz nawigator projektu i wybierz aplikację RayWonders.app znajdującą się w folderze Products.
  2. RayWonders w nawigatorze projektu

  3. Kliknij prawym przyciskiem myszy i wybierz opcję Show in Finder.
  4. RayWonders w oknie Findera

  5. 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.

Nagrywanie wideo za pomocą wiersza poleceń

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

Pasek statusu w RayWonders

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.

Get app container using Simctl

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.

Stream simulator logs

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.

Stream RayWonders logs

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.

Uwaga: Skrypt można utworzyć w dowolnym miejscu w systemie plików. Dla celów organizacyjnych w przykładowym projekcie, skrypt znajduje się w folderze `Scripts`.

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:

  1. Skrypt przyjmuje nazwę polecenia i nazwę symulatora jako parametry wiersza poleceń.
  2. get_id_of_simulatorget_status_of_simulator i launch to puste stuby, które zaimplementujesz w następnej kolejności.
  3. Skrypt obsługuje obecnie jedno polecenie o nazwie launch. Polecenie launch 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:

  1. 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;
  2. Wyszukuje identyfikator symulatora, wywołując get_id_of_simulator. Następnie zapisuje wynik w SIMULATOR_ID. Jeśli nie ma pasującego symulatora, kończy program;
  3. Wyszukuje status symulatora, wywołując get_status_of_simulator. Jeśli status wynosi Booted, uruchamia polecenie shutdown, aby go wyłączyć. Aby urządzenie mogło zostać sklonowane, musi zostać wyłączone;
  4. Klonuje symulator za pomocą polecenia clone;
  5. Bootuje zarówno oryginalny symulator, jak i sklonowany symulator za pomocą polecenia boot;
  6. Uruchamia aplikację na oryginalnym symulatorze za pomocą komendy launch;
  7. 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.

RayWonders w Hindi

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!

Uwaga: Jeśli napotkałeś problemy z uruchomieniem skryptu, upewnij się, że masz tylko jeden symulator o nazwie Demo. Możesz sprawdzić liczbę dostępnych symulatorów, uruchamiając 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.

RayWonders po japońsku

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ę

9 ocen

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *