Der Xcode Simulator ist eines der am häufigsten von Entwicklern genutzten Tools. Das Ausführen und Testen von Apps auf dem Simulator gehört mittlerweile zur täglichen Routine eines jeden Entwicklers. Sich mit den verschiedenen Optionen des Simulators vertraut zu machen, ist für jeden Entwickler unerlässlich. Wussten Sie, dass Sie Simulatoren auch über die Kommandozeile erstellen und konfigurieren können? In diesem Tutorial lernen Sie:
- Was ein Simulator ist
- Einblicke in nützliche Simulator-Optionen
- Simulatoren von der Kommandozeile aus zu erstellen und zu konfigurieren
- Protokolle über die Kommandozeile zu streamen und zu erfassen
- Ein Bash-Skript zu erstellen, um den Start der App auf einem Simulator in verschiedenen Sprachumgebungen zu automatisieren.
Getting Started
Laden Sie das Projekt herunter, indem Sie auf die Schaltfläche „Download Materials“ am oberen oder unteren Rand dieser Seite klicken. Öffnen Sie das RayWonders-Projekt. Bauen Sie es und führen Sie es aus.
Diese App hat zwei Registerkarten – Foto und Karte. Die Registerkarte Foto zeigt Fotos von den Wundern der Welt. Wenn Sie auf ein Foto tippen, wird eine detaillierte Ansicht seiner Beschreibung angezeigt. Die Registerkarte Karte zeigt die Fotos der Weltwunder als Anmerkungen auf einer Karte an. Dies ist eines der seltenen raywenderlich.com-Tutorials, bei dem Sie das Projekt nicht modifizieren werden. Stattdessen werden Sie diese App als Grundlage verwenden, um die verschiedenen Möglichkeiten des Simulators kennenzulernen. Bevor Sie sich auf Ihre Weltreise begeben, müssen Sie verstehen, was ein Simulator ist.
Was ist ein Simulator?
Der Simulator ist ein großartiges Werkzeug, um iOS, iPadOS, tvOS und watchOS auf dem Mac zu simulieren. Er hilft beim Rapid Prototyping und Testen von Builds, indem er verschiedene Geräte simuliert. Auf einer technischeren Ebene ist ein Simulator ein separater Benutzerbereich, der auf dem macOS-Kernel läuft.
Der Benutzerbereich ist der Systemspeicher, der zur Ausführung von Anwendungen zugewiesen wird, während der Kernelbereich der Systemspeicher ist, der zur Ausführung des Betriebssystemkerns und der Gerätetreiber zugewiesen wird. Das Starten eines neuen Simulators erzeugt einen separaten Benutzerbereich.
Der Kernel ist eine Kernkomponente des Betriebssystems. Er ermöglicht die Interaktion zwischen den Hardware- und Softwarekomponenten. Er ist verantwortlich für die Verwaltung der Hardware, die Zuweisung von Speicher und die Vermittlung zwischen Prozessen.
Einer dieser Prozesse – Daemon – läuft im Hintergrund. launchd, cfprefsd, distnoted sind einige der System-Daemons.
Sind der Betrieb einer App auf einem Gerät und auf einem Simulator dasselbe? Das erfahren Sie als nächstes.
Ausführen einer App auf einem Gerät vs. einem Simulator
Das Testen von Apps auf einem Simulator ist sehr praktisch. Es gibt jedoch ein paar wichtige Unterschiede zwischen dem Ausführen von Apps auf einem Gerät und auf einem Simulator.
Rechenleistung
Simulatoren teilen sich die gleichen Rechenressourcen mit dem Mac. Dazu gehören Speicher, CPU und Netzwerkverbindung. Im Gegensatz dazu haben physische Geräte im Vergleich zum Mac weniger Speicher und Rechenleistung. Außerdem kann das Netzwerk auf dem physischen Gerät ein unberechenbares Biest sein.
Anzeige
Die Auflösung und der Farbumfang auf einem Mac und dem physischen Gerät können sich unterscheiden, was dazu führt, dass Bilder und Text zackig erscheinen. Wie Sie die exakte Größe des physischen Geräts simulieren können, erfahren Sie später in dieser Anleitung.
Hardware-Einschränkungen
Einige Hardwarekomponenten werden in einem Simulator nicht unterstützt. Dazu gehören:
- Bluetooth
- Kamera
- Bewegungssensoren wie Beschleunigungsmesser und Gyroskop
- Näherungssensor
Framework-Einschränkungen
Ein paar Frameworks werden im Simulator nicht unterstützt. Dazu gehören:
- ARKit
- HomeKit
- IOSurface
- MessageUI
Eine ausführliche Liste aller Unterschiede finden Sie in der Dokumentation, indem Sie im Simulator-Menü Hilfe ▸ Simulator Hilfe wählen.
Nachfolgend erfahren Sie, wie Sie die Simulatoren organisieren können.
Simulatoren mit Xcode organisieren
Xcode wird mit einem Standardsatz von Simulatoren ausgeliefert. Um eine Liste dieser Simulatoren anzuzeigen, gehen Sie folgendermaßen vor:
- Öffnen Sie Xcode.
- Wählen Sie die Menüoption Fenster.
- Wählen Sie das Menü Geräte und Simulatoren.
- Wählen Sie die Registerkarte Simulatoren.
Sie sehen eine Liste der Simulatoren, die mit Xcode mitgeliefert wurden. Wenn Sie in der Vergangenheit andere Laufzeiten heruntergeladen haben, sehen Sie auch diese zugehörigen Simulatoren.
Nun erstellen Sie einen neuen Simulator mit einem eigenen Namen.
Befolgen Sie diese Schritte:
- Drücken Sie die +-Taste unten links.
- Setzen Sie den Simulator-Namen auf Demo.
- Wählen Sie iPhone 12 Pro als Gerätetyp.
- Wählen Sie iOS 14.2 als Betriebssystemversion.
- Drücken Sie auf Erstellen.
Damit wird ein neuer Simulator mit dem Namen Demo erstellt, den Sie nun in der Liste der Simulatoren finden können.
Deaktivieren Sie das Kontrollkästchen Als Laufzeitziel anzeigen für den Demo-Simulator.
Damit wird der Simulator ausgeblendet. Er wird nicht in der Liste der Simulatoren neben dem App-Schema angezeigt.
Klicken Sie mit der Ctrl-Taste auf den Demo-Simulator. Es erscheinen mehrere Optionen, wie z. B. Löschen und Umbenennen.
Löschen Sie den Demo-Simulator, indem Sie auf Löschen klicken. Keine Sorge, Sie werden ihn bald mit einer anderen Methode erstellen.
Ausführen älterer Runtimes
Manchmal müssen Sie Ihre App auf älteren Versionen von Runtimes laufen lassen.
Sie können ältere Runtimes herunterladen, indem Sie beim Erstellen eines neuen Simulators im Dropdown-Menü „OS-Version“ die Option „Weitere Runtimes herunterladen“ auswählen.
Sie können auch weitere Runtimes über das Fenster „Komponenten“ herunterladen. Wählen Sie die Option Xcode ▸ Einstellungen ▸ Komponenten.
Dieses Fenster zeigt die Liste der heruntergeladenen Simulator-Laufzeit sowie weitere Laufzeiten, die zum Download bereitstehen.
Als Nächstes lernen Sie eine alternative Methode zum Erstellen von Simulatoren kennen.
Simulatoren über das Simulatormenü erstellen
Erstellen und ausführen.
Wenn der Simulator läuft, führen Sie folgende Schritte aus:
- Wählen Sie Datei ▸ Neuer Simulator aus dem Simulatormenü.
- Geben Sie Demo als Simulatornamen ein.
- Wählen Sie iPhone 12 Pro als Gerätetyp.
- Wählen Sie iOS 14.2 als Version.
- Klicken Sie auf Erstellen.
Öffnen Sie den Simulator mit den folgenden Schritten:
- Wählen Sie Datei ▸ Simulator öffnen aus dem Menü.
- Wählen Sie die iOS 14.2 Laufzeit.
- Wählen Sie den Demo-Simulator.
Damit starten Sie den Demo-Simulator.
Das war schnell und einfach! Als nächstes lernen Sie die verschiedenen Größenoptionen des Simulators kennen.
Vergleich der Größenoptionen des Simulators
Sie können die Größe des Simulators durch Klicken und Ziehen an einer der vier Ecken ändern. Die Optionen im Menü „Fenster“ bieten vier Skalierungsoptionen.
Physikalische Größe
Physikalische Größe passt die Größe des Simulators an die tatsächliche Gerätegröße an. Dies visualisiert, wie Ihre App auf verschiedenen Bildschirmgrößen aussieht.
Punktgenau
Der punktgenaue Modus verkleinert das Fenster so, dass der Inhalt auf Geräten mit unterschiedlichen Skalierungsfaktoren die gleiche Größe hat. So erscheint ein Bild auf einem Gerät mit einem 3-fachen Display in der gleichen Größe wie auf einem 2-fachen Display.
Pixelgenau
In diesem Modus ändert sich die Fenstergröße auf die gleiche Anzahl von Pixeln wie das physische Gerät. Jedes Pixel auf dem simulierten Gerät entspricht einem Pixel auf dem Display Ihres Macs. Dies führt dazu, dass Simulatoren auf dem Bildschirm größer erscheinen, wenn der Bildschirm Ihres Macs eine geringere Pixeldichte als das simulierte Gerät hat. Sie können diesen Modus verwenden, um die Ausrichtung von Bildern und Steuerelementen in Ihrer App zu überprüfen.
Bildschirm anpassen
Dadurch wird die Größe des Simulators an die Größe Ihres Mac-Displays angepasst.
Als Nächstes lernen Sie die verschiedenen Optionen kennen, die ein Simulator bietet.
Slow Animations
Animationen sind ein wesentlicher Bestandteil eines App-Erlebnisses. Erstellen und starten Sie RayWonders im Demo-Simulator.
Tippen Sie auf die Registerkarte Fotos. Tippen Sie als nächstes auf ein Bild eines der Weltwunder, um eine Ansicht mit Details zu dem Ort anzuzeigen. Verlassen Sie die Ansicht, indem Sie sie nach unten schieben.
Um langsame Animationen zu simulieren, wählen Sie die Option Debug ▸ Langsame Animationen im Simulatormenü.
Tippen Sie erneut auf das Bild. Die Ansicht animiert nun langsam.
Das langsame Betrachten der Animationen kann helfen, Klarheit zu schaffen. Außerdem kann es helfen, Probleme beim Rendering und der Performance zu untersuchen.
Als Nächstes lernen Sie, wie Sie den Dark Mode simulieren. Bevor Sie fortfahren, deaktivieren Sie die langsamen Animationen, indem Sie die Menüoption Debug ▸ Langsame Animationen abwählen.
Dunkelmodus
Der Dunkelmodus bietet ein großartiges Seherlebnis in schwach beleuchteten Umgebungen. Der Simulator bietet eine Option, um Ihre App im dunklen Modus anzuzeigen.
Wählen Sie Funktionen ▸ Erscheinungsbild umschalten. Dadurch wird das Erscheinungsbild in den dunklen Modus umgeschaltet. Tippen Sie nun auf die Registerkarte Karte in RayWonders.
Sie werden feststellen, dass die Karte nun ein dunkles Aussehen hat. Einfach, nicht wahr? Dies ist ein praktischer Weg, um Ihre App im Dark Mode zu testen.
Um das Erscheinungsbild wieder auf die Standardeinstellung zu ändern, deaktivieren Sie die Option Features ▸ Erscheinungsbild umschalten. Um zu erfahren, wie Sie den Dark Mode unterstützen, lesen Sie Supporting Dark Mode:
Als Nächstes lernen Sie, wie Sie Push-Benachrichtigungen simulieren können!
Push-Benachrichtigungen simulieren
Push-Benachrichtigungen sind eine großartige Möglichkeit, Ihre Benutzer über neue Inhalte in Ihrer App zu informieren. In der Vergangenheit war das Testen von Push-Benachrichtigungen eine Herausforderung. Sie brauchten ein physisches Gerät, um die Push-Benachrichtigungen zu testen. Ab Xcode 11.4 können Sie Push-Benachrichtigungen auf einem Simulator simulieren.
Erstellen Sie eine Datei namens RayWondersPushNotification.apns mit folgendem Inhalt:
{ "Simulator Target Bundle": "com.raywenderlich.RayWonders", "aps": { "alert": { "title": "Hindi language support added!", "body": "Checkout RayWonders in Hindi!" } }}
Dies ist eine einfache, sichtbare Push-Benachrichtigungs-Payload mit einem title
und einem body
. Das Simulator Target Bundle
ist ein besonderer Schlüssel. Er gibt die Bundle-ID der App an, die die Benachrichtigung erhalten soll.
Bevor Sie die Nutzlast ausprobieren, müssen Sie zunächst die Benachrichtigungsberechtigung in der App erteilen.
Befolgen Sie diese Schritte:
- Öffnen Sie RayWonders im Demo-Simulator.
- Tippen Sie auf das Glockensymbol oben rechts in der Registerkarte „Fotos“.
- Wählen Sie „Zulassen“ in der Abfrage für die Benachrichtigungserlaubnis.
- Wählen Sie „Gerät ▸ Zuhause“ im Simulatormenü, um die App in den Hintergrund zu stellen.
Nächstes Beispiel: Ziehen Sie die Datei RayWondersPushNotification.apns auf den Demo-Simulator.
Ta-da! Eine sichtbare Push-Benachrichtigung erscheint. Das war einfach! Beachten Sie, dass ein Simulator eine Push-Benachrichtigung nur simulieren kann. Um eine tatsächliche Push-Benachrichtigung zu testen, die vom Apple-Push-Benachrichtigungsserver empfangen wurde, ist ein physisches Gerät erforderlich.
Um mehr über Push-Benachrichtigungen zu erfahren, lesen Sie dieses Tutorial zu Push-Benachrichtigungen: Erste Schritte.
Als nächstes lernen Sie, wie Sie zoomen können.
Vergrößern und Verkleinern
Öffnen Sie RayWonders im Simulator. Wechseln Sie auf die Registerkarte Karte. Die Karte ist auf ein Weltwunder zentriert und eingezoomt. Wo sind die anderen Weltwunder?
Um die Weltansicht zu sehen, müssen Sie herauszoomen. Klicken und ziehen Sie, während Sie die Optionstaste gedrückt halten.
Klicken und Ziehen ist toll, kann aber schnell ermüdend werden. Als Nächstes lernen Sie eine schnellere Methode kennen, um einen Standort aufzusuchen.
Standort simulieren
Der Simulator bietet eine einfache Möglichkeit, einen Standort zu simulieren. Zunächst müssen Sie in RayWonders Standortrechte erteilen.
Befolgen Sie diese Schritte:
- Öffnen Sie RayWonders im Simulator und wechseln Sie auf die Registerkarte Karte.
- Tippen Sie auf die Schaltfläche Standortdienste starten in der Registerkarte Karte.
- Wählen Sie die Berechtigung Während der Verwendung der App zulassen.
Nun, um den Standort zu simulieren:
- Wählen Sie Funktionen ▸ Standort ▸ Benutzerdefinierter Standort aus dem Simulatormenü.
- Tragen Sie 41.8902142 als Breitengrad und 12.4900422 als Längengrad ein.
- Klicken Sie auf OK.
So gelangen Sie direkt zum Kolosseum auf der Karte – Ihre schnellste Reise überhaupt!
Doch das Eingeben der Koordinaten für jeden zu simulierenden Ort ist eine recht speicherintensive Aufgabe – Ihr Gedächtnis, versteht sich. Im Folgenden lernen Sie eine einfachere Lösung für dieses Problem kennen.
Standorte aus der Maps-App teilen
Die Maps-App auf macOS bietet eine einfache Möglichkeit, Standorte mit Ihrem Simulator zu teilen.
Befolgen Sie diese Schritte:
- Öffnen Sie die Maps-App.
- Geben Sie Machu Picchu in den Suchtext ein.
- Klicken Sie auf die Schaltfläche „Teilen“ neben dem Suchfeld.
- Wählen Sie „Simulator“ aus dem Dropdown-Menü.
- Wählen Sie in der Standortabfrage „Demo“ als Simulator.
- Klicken Sie auf Senden.
Sie sind jetzt in Machu Picchu in der Kartenansicht des Simulators.
Glückwunsch! Sie haben gerade einen Weltrekord als schnellster Reisender vom Kolosseum nach Machu Picchu aufgestellt! :]
Um mehr über den Umgang mit dem Standort in Ihrer App zu erfahren, schauen Sie sich MapKit und Core Location an.
Jetzt ist es an der Zeit, die Dinge aufzurütteln.
Schüttelgesten simulieren
Schüttelgesten sind großartige Hinweise, um den Benutzer in einer App zum Feedback aufzufordern. Aber wie kann man einen Simulator schütteln? Zum Glück ist das rigorose Schütteln des Macs nicht die Lösung. Der Simulator bietet einen einfachen Weg.
Öffnen Sie RayWonders auf dem Demo-Simulator. Wählen Sie im Simulator-Menü Gerät ▸ Schütteln.
Damit wird eine Schüttelgeste simuliert.
RayWonders erkennt das Schütteln und gibt dem Benutzer einen Hinweis. Sie können Schüttelgesten in Ihrer App erkennen und behandeln, indem Sie die Methode motionEnded(_:with:)
implementieren. Weitere Informationen finden Sie in der Apple-Dokumentation.
Als Nächstes lernen Sie, wie Sie eine Speicherwarnung simulieren können.
Simulieren einer Speicherwarnung
iOS sendet eine Warnung an die App, wenn sich die Speichernutzung der Obergrenze auf dem Gerät nähert. Die App muss darauf reagieren, indem sie die Cache-Daten löscht, die später wieder neu erstellt werden können.
Öffnen Sie RayWonders auf dem Demo-Simulator. Wählen Sie im Menü Debug ▸ Speicherwarnung simulieren.
Dadurch wird eine Speicherwarnung simuliert.
RayWonders zeigt eine Warnung an. Mehr über den Umgang mit Speicherwarnungen erfahren Sie in dieser Apple-Dokumentation Reagieren auf Speicherwarnungen.
So weit haben Sie einige nützliche Simulatoroptionen gesehen. Es gibt noch einige andere, die in diesem Tutorial nicht behandelt werden. Sie sollten sie je nach den Anforderungen Ihrer App ausprobieren. Einige dieser Optionen sind:
- Simulieren Sie die iCloud-Synchronisierung mit Funktionen ▸ iCloud-Synchronisierung auslösen.
- Simulieren Sie die Apple Pay-Autorisierung mit Funktionen ▸ Apple Pay autorisieren.
- Siri auslösen mit Gerät ▸ Siri.
- Systemprotokoll prüfen mit Debug ▸ Systemprotokoll öffnen.
Als Nächstes lernen Sie, mit Simulatoren über die Befehlszeile zu interagieren.
Simulatoren über die Befehlszeile organisieren
Bislang haben Sie Simulatoren mit Xcode erstellt und verwaltet. Außerdem haben Sie die verschiedenen Menüoptionen für Simulatoren kennengelernt. Jetzt lernen Sie, wie Sie Simulatoren über die Kommandozeile verwalten und verwenden können.
Öffnen Sie Terminal. Geben Sie den folgenden Befehl ein:
xcrun simctl --help
und drücken Sie die Eingabetaste.
Die Hilfe-Option bietet eine Liste aller Unterbefehle, die mit simctl verfügbar sind.
Simctl ist ein Werkzeug, das bei der Verwaltung und der programmatischen Verbindung mit dem Simulator hilft. Sie können auf simctl über das Befehlszeilenwerkzeug xcrun zugreifen.
Nun werden Sie einige dieser Unterbefehle kennenlernen. Führen Sie Folgendes aus:
xcrun simctl list
Der Befehl list zeigt die Liste aller verfügbaren Geräte und der Laufzeiten an.
Es zeigt auch den aktuellen Zustand der Geräte an, ob er gebootet oder heruntergefahren ist.
Als Nächstes lernen Sie, einen Simulator über die Kommandozeile zu erstellen und zu starten.
Simulator über die Kommandozeile erstellen
Bevor Sie einen neuen Simulator erstellen, löschen Sie den über Xcode erstellten Demo-Simulator. Geben Sie dazu folgendes ein:
xcrun simctl delete Demo
Der Befehl delete identifiziert einen Simulator und löscht ihn. Erstellen Sie nun einen neuen Simulator über die Befehlszeile.
Geben Sie Folgendes ein:
xcrun simctl create Demo "iPhone 12 Pro" "iOS14.2"
Der Befehl create nimmt einen Gerätetyp und eine Laufzeit auf und erstellt einen Simulator. Hier wird ein iPhone 12 Pro-Simulator mit iOS 14.2-Laufzeit erstellt.
Nun zeigt Terminal die eindeutige Kennung des neuen Geräts an.
Geben Sie Folgendes ein:
xcrun simctl boot Demo
Der startet den Demo-Simulator. Standardmäßig befindet er sich im Zustand „Shutdown“.
Nun installieren Sie RayWonders über die Kommandozeile. Dazu benötigen Sie zunächst das App-Bundle. Folgen Sie diesen Schritten:
- Öffnen Sie den Projektnavigator und wählen Sie RayWonders.app, die sich im Ordner „Produkte“ befindet.
- Klicken Sie mit der rechten Maustaste und wählen Sie Im Finder anzeigen.
- Kopieren Sie RayWonders in Ihr Heimatverzeichnis.
Öffnen Sie Terminal und navigieren Sie zum Home-Verzeichnis, indem Sie Folgendes eingeben:
cd ~
Nachfolgend führen Sie Folgendes aus:
xcrun simctl install Demo RayWonders.app
Der install
Befehl installiert RayWonders auf dem Simulator. Gute Arbeit!
Sie können die App auch mit simctl starten. Geben Sie Folgendes ein:
xcrun simctl launch Demo com.raywenderlich.RayWonders
Der Befehl launch nimmt die App-Bundle-ID als Parameter. RayWonders wird im Demo-Simulator gestartet.
Glückwunsch! Sie haben nun einen Simulator über die Kommandozeile erstellt, gebootet, installiert und gestartet. Hier sind einige weitere Optionen, die Sie ausprobieren können:
- terminate: Dies beendet eine Anwendung unter Verwendung der Bundle-Kennung.
- erase: Dies löscht den Geräteinhalt.
- uninstall: Hiermit wird die Anwendung deinstalliert. Sie müssen die Bundle-Kennung der Anwendung angeben.
Nachfolgend lernen Sie einige coole Befehle kennen, die für Ihre App verfügbar sind.
Screenshots erstellen
Screenshots Ihrer App können in verschiedenen Szenarien nützlich sein. Zum Beispiel benötigen Sie Screenshots, wenn Sie Ihre App im AppStore einreichen.
Geben Sie den folgenden Befehl ein:
xcrun simctl io Demo screenshot screenshot.png --type="png"
Dies nimmt einen Screenshot des aktuellen Bildschirms auf und speichert ihn in der Datei screenshot.png. Der screenshot
Befehl unterstützt neben png auch andere Dateiformate wie TIFF, BMP, GIF und JPEG.
Ein Screenshot kann zeigen, wie Ihre App aussieht, und ein Bild sagt mehr als tausend Worte. Ein Video ist jedoch viel mehr wert. :]
Video aufzeichnen
Sie können mit simctl Videos Ihrer App aufzeichnen. Um die Aufnahme zu starten, geben Sie den folgenden Befehl ein:
xcrun simctl io Demo recordVideo Demo.mov --codec="h264"
Interagieren Sie mit RayWonders auf dem Simulator. Drücken Sie Control-C im Terminal, wenn Sie fertig sind. Dies speichert das Video in Demo.mov.
Zudem können Sie bei der Aufnahme den gewünschten Codec angeben. Der voreingestellte Codec ist hevc.
Mit dem recordVideo
-Befehl können Sie ein Video Ihrer App ohne QuickTime-Player aufnehmen.
Anpassen der Statusleiste
Prüfen Sie die Statusleiste der App im Simulator. Sie können sehen, dass der Akku voll ist, das Gerät das beste Signal hat und die Zeit im Simulator Ihre lokale Mac-Zeit ist. Was tun Sie, wenn Sie diese überschreiben möchten?
Geben Sie folgenden Befehl in Terminal ein:
xcrun simctl status_bar Demo override \ --dataNetwork 4g --cellularBars 2 --batteryState charging \ --batteryLevel 25 --time 12:05
Dies überschreibt die Statusleiste, um Folgendes einzustellen:
- Datennetzwerk als 4G
- Mobilfunksignal auf zwei Balken
- Batteriestatus auf Laden und der Batteriestand auf 25 %
- Zeit auf dem Simulator auf 12:05
Wenn Sie dies in Ihrem eigenen Projekt tun, können Sie die Informationen der Statusleiste auf das setzen, was Sie wollen.
Der status_bar
-Befehl kann sehr praktisch sein, wenn Sie das Aussehen Ihrer App-Screenshots und Videos anpassen möchten.
Wenn Sie fertig sind, stellen Sie die Statusleiste wieder auf das Standard-Erscheinungsbild zurück, indem Sie Folgendes eingeben:
xcrun simctl status_bar Demo clear
Fehlersuche und Diagnose
Simctl bietet auch mehrere Befehle, die bei der Fehlersuche und Diagnose von Problemen helfen.
Gehen Sie zurück zum Terminal und geben Sie Folgendes ein:
xcrun simctl get_app_container Demo com.raywenderlich.RayWonders
get_app_container
gibt den Pfad des App-Bundles aus.
Über diesen Pfad können Sie die Daten innerhalb des App-Containers inspizieren. Außerdem können die Protokolle des Simulators bei der Fehlersuche sehr nützlich sein.
Nun geben Sie Folgendes in Terminal ein:
xcrun simctl spawn Demo log stream
Damit werden alle Protokolle des Demo-Simulators gestreamt.
Das kann jedoch zu viele Daten zum Prüfen sein. Drücken Sie Control-C, um den Stream zu stoppen.
Versuchen Sie Folgendes:
xcrun simctl spawn Demo log stream | grep com.raywenderlich.RayWonders
Dies filtert die Logs und zeigt nur die von RayWonders an.
Wenn Sie mit der App interagieren, werden mehr Logs im Terminal angezeigt. Diese Protokolle können sehr nützlich sein, wenn Sie einen Fehler melden oder Apple Feedback geben wollen.
Geben Sie Folgendes ein:
xcrun simctl diagnose
Der diagnose
-Befehl sammelt eine Reihe von Daten, einschließlich Protokolle und Abstürze. Er generiert auch Dateien, die Apple bei der Fehlersuche helfen können. Standardmäßig beziehen sich die gesammelten Protokolle auf das gebootete Gerät. Durch Angabe der UDID eines Geräts können Sie die Sammlung von Protokollen auf dieses bestimmte Gerät beschränken.
Sie sind jetzt ein Simulator-Befehlszeilenexperte geworden! Sie können noch einen Schritt weiter gehen, indem Sie häufige Aktionen mit Bash-Skripten automatisieren.
Automatisieren mit einem Bash-Skript
Nun werden Sie ein Skript erstellen, um einen Simulator zu klonen und RayWonders in einem anderen Gebietsschema zu starten.
Zunächst öffnen Sie Terminal und geben Folgendes ein:
touch sim_utility.sh
Damit wird eine neue Datei mit dem Namen sim_utility erstellt. Die Erweiterung .sh zeigt an, dass es sich um ein Shell-Skript handelt.
Als Nächstes führen Sie aus:
chmod +x sim_utility.sh
Damit wird sim_utility.sh ausführbar, so dass Sie es starten können.
Öffnen Sie sim_utility.sh in einem Editor und fügen Sie Folgendes ein:
#!/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
Hier ist zu sehen, was passiert:
- Das Skript nimmt einen Befehlsnamen und einen Simulatornamen als Befehlszeilenparameter an.
-
get_id_of_simulator
get_status_of_simulator
undlaunch
sind leere Stubs, die Sie als nächstes implementieren werden. - Das Skript unterstützt derzeit einen Befehl namens
launch
. Daslaunch
nimmt drei zusätzliche Parameter entgegen, die Sie demnächst implementieren werden.
Ersetzen Sie in get_id_of_simulator
das #TODO
durch folgendes:
xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH-2 )}'
get_id_of_simulator
sucht in der Liste der Simulatoren nach einer Übereinstimmung mit dem als Parameter angegebenen Namen. Wenn es eine Übereinstimmung findet, erhält die Teilstring-Operation den eindeutigen Bezeichner des Simulators.
In der Methode get_status_of_simulator
ersetzen Sie #TODO
durch Folgendes:
xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH - 2 )}'
get_status_of_simulator
sucht in der Liste der Geräte nach einem Simulator mit einem passenden Namen. Wenn es eine Übereinstimmung findet, erhält es den Status des Simulators – gebootet oder heruntergefahren. Diesen verwenden Sie in dem launch
.
Implementieren des Starts
Ersetzen Sie in launch
das #TODO
durch Folgendes:
#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)"
Speichern Sie die Datei. Das funktioniert Schritt für Schritt so. Es:
- Gibt zusätzliche Parameter an
launch
, darunter die Bundle-ID der Anwendung, das Gebietsschema und die Sprache, in der Ihre App gestartet werden soll. Es deklariert eine lokale VariableCLONE_NAME
, die der Name des geklonten Geräts ist. In diesem Fall ist der Name des geklonten Geräts das von Ihnen angegebene Gebietsschema; - Ermittelt die ID des Simulators durch Aufruf von
get_id_of_simulator
. Dann speichert es das Ergebnis inSIMULATOR_ID
. Wenn es keinen passenden Simulator gibt, wird das Programm beendet; - Ermittelt den Status des Simulators durch Aufruf von
get_status_of_simulator
. Wenn der StatusBooted
ist, führt es den Befehlshutdown
aus, um ihn herunterzufahren. Um geklont zu werden, muss ein Gerät heruntergefahren werden; - Klont den Simulator mit dem Befehl
clone
; - Boottet sowohl den ursprünglichen Simulator als auch den geklonten Simulator mit dem Befehl
boot
; - Startet die App auf dem ursprünglichen Simulator mit dem Befehl
launch
; - Startet die App mit dem Befehl
launch
auf dem geklonten Simulator. Er gibt das Gebietsschema und die Sprache an, in der die App gestartet werden soll.
Starten von RayWonders in einem anderen Gebietsschema
Öffnen Sie Terminal und führen Sie Folgendes aus:
./sim_utility.sh launch Demo com.raywenderlich.RayWonders hi_IN hi
RayWonders startet in Hindi auf einem geklonten Simulator mit dem Namen hi_IN.
Nicht mehr in die Einstellungen gehen und die Gerätesprache wechseln, um Ihre App zu testen. Sie können jetzt Ihre App in mehreren Sprachen gleichzeitig sehen. Gute Arbeit!
xcrun simctl list | grep Demo
im Terminal ausführen. Löschen Sie alle doppelten Simulatoren und versuchen Sie es erneut.RayWonders unterstützt auch ein paar andere Sprachen. Führen Sie Folgendes aus:
./sim_utility.sh launch Demo com.raywenderlich.RayWonders ja_Jp ja
RayWonders startet nun auf Japanisch auf einem neuen Simulator.
Als lustige Herausforderung implementieren Sie zwei weitere Befehle in das sim_utility-Skript.
- Aufräumen: Dies löscht einen Simulator, dem ein Simulatorname gegeben wurde.
- Hilfe: Gibt ein Menü mit allen vom Skript unterstützten Befehlen aus.
Die endgültige Version des Skripts mit all diesen Optionen finden Sie im Ordner „Scripts“ in den heruntergeladenen Materialien.
Wo geht es weiter?
Laden Sie das Projekt herunter, indem Sie auf die Schaltfläche „Materialien herunterladen“ oben oder unten auf dieser Seite klicken.
In diesem Tutorial haben Sie viele nützliche Simulator- und Kommandozeilenoptionen kennengelernt. Um mehr zu erfahren, sehen Sie sich bitte diese WWDC-Videos an:
- Das Beste aus dem Simulator herausholen
- Werden Sie ein Simulator-Experte
Ich hoffe, dieses Tutorial hat Ihnen gefallen. Wenn Sie Fragen oder Kommentare haben, nehmen Sie bitte an der Forumsdiskussion unten teil.
raywenderlich.com Weekly
Der raywenderlich.com Newsletter ist der einfachste Weg, um auf dem Laufenden zu bleiben über alles, was Sie als mobiler Entwickler wissen müssen.
Erhalten Sie eine wöchentliche Zusammenfassung unserer Tutorials und Kurse und erhalten Sie als Bonus einen kostenlosen Vertiefungskurs per E-Mail!
Durchschnittliche Bewertung
5/5