Xcode Simulator App Advanced

De Xcode Simulator is een van de tools die het meest wordt gebruikt door ontwikkelaars. Het uitvoeren en testen van apps op de simulator is onderdeel geworden van de dagelijkse routine van elke ontwikkelaar. Het is voor elke ontwikkelaar van vitaal belang om bekend te raken met de verschillende simulatoropties. Wist je dat je simulators ook kunt maken en configureren vanaf de commandoregel? In deze tutorial leer je:

  • Wat een simulator is
  • Inzicht in nuttige simulatoropties
  • Simulatoren maken en configureren vanaf de opdrachtregel
  • Logs streamen en vastleggen met behulp van de opdrachtregel
  • Een Bash-script maken om het starten van de app op een simulator in verschillende locales te automatiseren.

Aan de slag

Download het project door op de Download Materialen knop te klikken bovenaan of onderaan deze pagina. Open het RayWonders project.

Geavanceerde Simulator-workthrough

Deze app heeft twee tabbladen – Foto en Kaart. Het tabblad Foto toont foto’s van de wonderen van de wereld. Als u op een foto tikt, krijgt u een gedetailleerde beschrijving te zien. Het tabblad Kaart toont de foto’s van de wereldwonderen als annotaties op een kaart. Dit is een van de zeldzame raywenderlich.com tutorials waarin je het project niet zult aanpassen. In plaats daarvan zult u deze app gebruiken als een basis om de verschillende simulator opties te leren. Voordat je aan je wereldreis begint, moet je begrijpen wat een simulator is.

Wat is een simulator?

De simulator is een geweldig hulpmiddel om iOS, iPadOS, tvOS, en watchOS op de Mac te simuleren. Het helpt bij rapid prototyping en het testen van builds door verschillende apparaten te simuleren. Op een technischer niveau is een simulator een aparte gebruikersruimte die op de macOS-kernel draait.

Simulatorarchitectuur

Gebruikersruimte is het systeemgeheugen dat is toegewezen om toepassingen uit te voeren, terwijl kernelruimte het systeemgeheugen is dat is toegewezen om de OS-kernel en apparaatstuurprogramma’s uit te voeren. Wanneer een nieuwe simulator wordt gestart, wordt een aparte gebruikersruimte gecreëerd.

De kernel is een kerncomponent van het besturingssysteem. Het vergemakkelijkt de interacties tussen de hardware en software componenten. Het is verantwoordelijk voor het beheer van de hardware, het toewijzen van geheugen en het bemiddelen tussen processen.

Een van deze processen – Daemon – draait op de achtergrond. launchd, cfprefsd, distnoted zijn enkele van de systeem daemons.

Zijn het draaien van een app op een apparaat en op een simulator hetzelfde? Dat leer je hierna.

App draaien op een apparaat vs. een simulator

Apps testen op een simulator is erg handig. Er zijn echter een paar belangrijke verschillen tussen het draaien van apps op een apparaat en op een simulator.

Computerprestaties

Simulators delen dezelfde computerbronnen als de Mac. Dit omvat geheugen, CPU en netwerkverbinding. Fysieke apparaten hebben daarentegen minder geheugen en rekenkracht in vergelijking met een Mac. Bovendien kan het netwerk op het fysieke apparaat een onvoorspelbaar beest zijn.

Prestaties van het apparaat versus prestaties van de Mac

Display

De resolutie en het kleurengamma op een Mac en het fysieke apparaat kunnen verschillen, waardoor afbeeldingen en tekst er gekarteld uitzien. Later in deze handleiding leert u hoe u de exacte afmetingen van het fysieke apparaat kunt simuleren.

Beperkingen aan de hardware

Enkele hardwarecomponenten worden niet ondersteund in een simulator. Deze omvatten:

  • Bluetooth
  • Camera
  • Motion sensors zoals accelerometer en gyroscoop
  • Proximity sensor

Framework Limitations

Een paar frameworks worden niet ondersteund in de simulator. Deze omvatten:

  • ARKit
  • HomeKit
  • IOSurface
  • MessageUI

Voor een meer uitputtende lijst van alle verschillen, raadpleeg de documentatie door Help ▸ Simulator Help in het Simulator menu te selecteren.

Volgende leert u hoe u de simulatoren kunt organiseren.

Simulatoren organiseren met Xcode

Xcode wordt geleverd met een standaard set simulatoren. Volg deze stappen om een lijst van deze simulatoren te bekijken:

  1. Open Xcode.
  2. Selecteer de menuoptie Venster.
  3. Kies het menu Apparaten en simulatoren.
  4. Apparaten en simulatoren in Xcode

  5. Selecteer het tabblad Simulatoren.

U ziet nu een lijst met simulatoren die met Xcode zijn meegeleverd. Als u in het verleden andere runtimes hebt gedownload, ziet u ook de bijbehorende simulators.

Nu maakt u een nieuwe simulator met een eigen naam.

Simulator maken vanuit Xcode

Volg deze stappen:

  1. Druk op de knop + linksonder.
  2. Stel de naam van de simulator in op Demo.
  3. Selecteer iPhone 12 Pro als apparaattype.
  4. Selecteer iOS 14.2 als de OS versie.
  5. Druk op Maken.

Dit creëert een nieuwe simulator met de naam Demo, die je nu kunt vinden in de lijst met simulators.

Vink het vakje Toon als runtime-bestemming voor de Demo-simulator uit.

Verberg simulator-optie

Hiermee verberg je de simulator. Hij wordt niet weergegeven in de lijst met simulators naast het app-schema.

Control-klik op de Demo-simulator. Er verschijnen verschillende opties, zoals Verwijderen en Hernoemen.

Verwijder simulator contextmenu

Ga je gang en verwijder de Demo-simulator door op Verwijderen te klikken. Maak je geen zorgen; je zult hem binnenkort met een andere methode maken.

Op oudere runtimes draaien

Soms zul je je app op oudere versies van runtimes moeten draaien.

Download runtimes menu

U kunt oudere runtimes downloaden door Download more runtimes te selecteren in de OS Version drop-down wanneer u een nieuwe simulator maakt.

U kunt ook meer runtimes downloaden vanuit het Components-venster. Selecteer Xcode ▸ Voorkeuren ▸ Componenten optie.

Simulatorcomponenten venster

Dit venster toont de lijst van de gedownloade simulator runtime en andere runtimes die beschikbaar zijn om te downloaden.

Volgende leert u een alternatieve manier om simulatoren te maken.

Simulatoren maken vanuit het simulatormenu

Bouwen en uitvoeren.

Wanneer de simulator draait, volgt u deze stappen:

  1. Selecteer File ▸ New Simulator in het simulatormenu.
  2. Simulator maken in menu

  3. Voer Demo in als simulatornaam.
  4. Selecteer iPhone 12 Pro als apparaattype.
  5. Selecteer iOS 14.2 als versie.
  6. Klik op Maken.

Open de simulator door de volgende stappen te volgen:

  1. Selecteer Bestand ▸ Open Simulator in het menu.
  2. Selecteer de iOS 14.2-runtime.
  3. Kies de Demo-simulator.

Demo-simulator

Dit start de Demo-simulator.

Dat was snel en gemakkelijk! Nu leert u de verschillende opties voor de grootte van de simulator kennen.

Vergelijk de opties voor de grootte van de simulator

U kunt de grootte van een simulator wijzigen door te klikken en te slepen vanuit een van de vier hoeken. Het menu Venster biedt vier opties voor het schalen.

Fysieke grootte

Simulator in fysieke grootte

De fysieke grootte past de simulator aan de werkelijke grootte van het apparaat aan. Zo wordt gevisualiseerd hoe uw app eruitziet op verschillende schermgroottes.

Puntnauwkeurig

Simulator in puntnauwkeurige modus

Puntnauwkeurige modus zorgt ervoor dat het venster zo wordt vergroot dat de inhoud dezelfde grootte heeft op apparaten met verschillende schaalfactoren. Hierdoor wordt een afbeelding op een apparaat met een 3x beeldscherm even groot weergegeven als op een 2x beeldscherm.

Pixelnauwkeurig

Simulator in pixelnauwkeurige modus

In deze modus verandert de venstergrootte in hetzelfde aantal pixels als het fysieke apparaat. Elke pixel op het gesimuleerde apparaat komt overeen met één pixel op het beeldscherm van uw Mac. Hierdoor lijken simulators groter op het scherm als het beeldscherm van uw Mac een lagere pixeldichtheid heeft dan het gesimuleerde apparaat. U kunt deze modus gebruiken om de uitlijning van afbeeldingen en besturingselementen in uw programma te controleren.

Pas scherm

Simulator in pasmodus

Hiermee wordt het formaat van de simulator aangepast aan de grootte van het beeldscherm van uw Mac.

Volgende leert u de verschillende opties van een simulator.

Slow Animations

Animaties zijn een integraal onderdeel van een app-ervaring. Bouw en draai RayWonders in de Demo-simulator.

Tik op het tabblad Foto’s. Tik vervolgens op een foto van een van de wereldwonderen om een weergave met details over de plaats te tonen. Verlaat de weergave door deze omlaag te schuiven.

Om langzame animaties te simuleren, selecteert u de optie Debug ▸ Langzame animaties in het menu Simulator.

Menuoptie Langzame animaties

Tik nogmaals op de foto. De weergave wordt nu langzaam geanimeerd.

RayWonders op simulator met langzame animatie

Het langzaam bekijken van de animaties kan helpen duidelijkheid te brengen. Bovendien kan het helpen bij het onderzoeken van problemen in rendering en performance.

Volgende leer je om Dark Mode te simuleren. Voordat u verder gaat, schakelt u de langzame animaties uit door de menu-optie Debug ▸ Slow Animations te deselecteren.

Dark Mode

Dark Mode biedt een geweldige kijkervaring in omgevingen met weinig licht. De simulator biedt een optie om uw app in Donkere Modus te bekijken.

Menuoptie Uiterlijk uitschakelen

Selecteer Functies ▸ Uiterlijk uitschakelen. Hiermee schakelt u het uiterlijk naar de donkere modus. Tik nu op het tabblad Kaart in RayWonders.

RayWonders-kaart Donkere modus

U zult zien dat de kaart een donkere uitstraling heeft gekregen. Makkelijk, nietwaar? Dit is een handige manier om je app in Dark Mode te testen.

Om het uiterlijk terug te zetten naar standaard, deselecteert u Features ▸ Toggle appearance. Om te leren hoe u de donkere modus kunt ondersteunen, leest u Ondersteunen van de donkere modus:

Volgende leert u hoe u push-notificaties kunt simuleren!

Simuleren van push-notificaties

Push-notificaties zijn een geweldige manier om uw gebruikers op de hoogte te brengen van nieuwe inhoud in uw app. In het verleden was het testen van push-notificaties een uitdaging. Je had een fysiek apparaat nodig om de pushmeldingen te testen. Vanaf Xcode 11.4 kunt u pushberichten simuleren op een simulator.

Maak een bestand met de naam RayWondersPushNotification.apns met het volgende:

{ "Simulator Target Bundle": "com.raywenderlich.RayWonders", "aps": { "alert": { "title": "Hindi language support added!", "body": "Checkout RayWonders in Hindi!" } }}

Dit is een eenvoudige, zichtbare push notification payload met een title en een body. De Simulator Target Bundle is een speciale sleutel. Het specificeert de bundel-ID van de app die de notificatie moet ontvangen.

Voordat u de payload kunt proberen, moet u eerst notificatietoestemming geven in de app.

Gener notificatietoestemming

Volg deze stappen:

  1. Open RayWonders in de Demo-simulator.
  2. Tik op het belpictogram rechtsboven in het tabblad Foto’s.
  3. Selecteer Toestaan in de meldingstoestemmingsprompt.
  4. Selecteer Apparaat ▸ Thuis in het simulatormenu om de app op de achtergrond te zetten.
  5. Huismenu-optie in simulator

Volgende, sleep het bestand RayWondersPushNotification.apns naar de Demo-simulator.

Simuleer push-melding met behulp van slepen en neerzetten

Ta-da! Er verschijnt een zichtbare pushmelding. Dat was makkelijk! Houd er rekening mee dat een simulator alleen een pushmelding kan simuleren. Om een echte pushnotificatie te testen die is ontvangen van de Apple pushnotificatieserver, is een fysiek apparaat nodig.

Om meer te leren over pushnotificaties, lees deze Push Notifications Tutorial: Aan de slag.

Volgende leert u hoe u kunt zoomen.

In- en uitzoomen

Open RayWonders in de simulator. Ga naar het tabblad Kaart. De kaart is gecentreerd en ingezoomd op een wereldwonder. Waar zijn de andere wereldwonderen?

U moet uitzoomen om het wereldbeeld te zien. Klik en sleep terwijl je de Option-toets ingedrukt houdt.

Zoom en pan in simulator

Klikken en slepen is geweldig, maar het kan snel vermoeiend worden. Nu leert u een snellere manier om naar een locatie te gaan.

Een locatie simuleren

De simulator biedt een eenvoudige manier om een locatie te simuleren. Eerst moet u in RayWonders machtigingen voor locaties geven.

Locatiemachtigingen geven

Volg deze stappen:

  1. Open RayWonders in de simulator en ga naar het tabblad Kaart.
  2. Tik op de knop Locatiediensten starten in het tabblad Kaart.
  3. Selecteer de permissie Toestaan tijdens gebruik van app.

Nu, om locatie te simuleren:

  1. Selecteer Features ▸ Location ▸ Custom Location in het Simulator-menu.
  2. Locatie simuleren-menu

  3. Voer 41,8902142 in als breedtegraad en 12,4900422 als lengtegraad.
  4. Klik op OK.
  5. Simuleer locatiecoördinaten

Dit brengt u rechtstreeks naar het Colosseum op de kaart – uw snelste reis ooit!

Colosseum op de kaart

Het invoeren van de coördinaten voor elke te simuleren locatie is echter een behoorlijk geheugenintensieve taak – uw geheugen, wel te verstaan -. Hierna volgt een eenvoudiger oplossing voor dit probleem.

Locaties delen vanuit de Kaarten-app

De Kaarten-app op macOS biedt een eenvoudige manier om locaties te delen met je simulator.

Simuleer locatie vanuit Kaarten-app

Volg deze stappen:

  1. Open de Kaarten-app.
  2. Voer Machu Picchu in de zoektekst in.
  3. Klik op de knop Delen naast het zoekveld.
  4. Kies Simulator uit de vervolgkeuzelijst.
  5. In de locatieprompt selecteert u Demo als de simulator.
  6. Simulator-menuoptie in Kaarten

  7. Klik op Verzenden.

Je bent nu in Machu Picchu in de kaartweergave van de simulator.

Locatie gesimuleerd in RayWonders

Gefeliciteerd! U hebt zojuist een wereldrecord gevestigd als de snelste reiziger van het Colosseum naar Machu Picchu!

Om meer te weten te komen over het omgaan met locatie in je app, bekijk je MapKit en Core Location.

Nu is het tijd om de boel eens flink door elkaar te schudden.

Simuleren van schudbewegingen

Schudbewegingen zijn geweldige signalen om de gebruiker feedback te laten geven in een app. Maar hoe kun je een simulator laten schudden? Gelukkig is het niet de oplossing om de Mac rigoureus te schudden. De simulator biedt een gemakkelijke manier.

Open RayWonders op de Demo simulator. Selecteer Apparaat ▸ Schudden in het menu Simulator.

Menuoptie Schudden

Dit simuleert een schudbeweging.

Schudbeweging gedetecteerd in RayWonders

RayWonders detecteert de schudbeweging en geeft een waarschuwing aan de gebruiker. Je kunt schudbewegingen in je app detecteren en afhandelen door de methode motionEnded(_:with:) te implementeren. Voor meer informatie kunt u de documentatie van Apple raadplegen.

Volgende les leert u hoe u een geheugenwaarschuwing kunt simuleren.

Een geheugenwaarschuwing simuleren

iOS stuurt een waarschuwing naar de app wanneer het geheugengebruik de bovenlimiet op het apparaat nadert. De app moet reageren door de cache gegevens te wissen, die later opnieuw kunnen worden aangemaakt.

Open RayWonders op de Demo simulator. Selecteer Debug ▸ Geheugenwaarschuwing simuleren in het menu.

Memory warning menu-optie

Dit simuleert een geheugenwaarschuwing.

Geheugenwaarschuwing in RayWonders

RayWonders toont een waarschuwing. U kunt meer leren over het omgaan met geheugenwaarschuwingen in deze Apple documentatie over reageren op geheugenwaarschuwingen.

Tot nu toe heeft u een aantal nuttige simulator opties gezien. Er zijn er nog een aantal die niet in deze handleiding zijn behandeld. Je zou ze moeten bekijken, afhankelijk van wat je app nodig heeft. Enkele van deze opties zijn:

  • Simuleer iCloud synchronisatie met behulp van Features ▸ Trigger iCloud Sync.
  • Simuleer Apple Pay autorisatie met behulp van Features ▸ Apple Pay autoriseren.
  • Trigger Siri met behulp van Device ▸ Siri.
  • Check System Log using Debug ▸ Open System Log.

Volgende leert u om te gaan met simulatoren met behulp van de opdrachtregel.

Simulatoren organiseren met behulp van de opdrachtregel

Tot nu toe hebt u simulatoren gemaakt en beheerd met behulp van Xcode. Daarnaast heeft u ook de verschillende Simulator menu opties geleerd. Nu leert u simulatoren te beheren en te gebruiken vanaf de opdrachtregel.

Open Terminal. Voer het volgende commando in:

xcrun simctl --help

en druk op Enter.

De helpoptie geeft een lijst van alle subcommando’s die beschikbaar zijn met simctl.

Simctl Help commando

Simctl is een hulpmiddel voor het beheren en programmatisch interfacen met de simulator. Je kunt simctl openen met het xcrun command-line gereedschap.

Nu zul je een aantal van deze subcommando’s verkennen. Voer het volgende uit:

xcrun simctl list

Het list commando toont de lijst van alle beschikbare apparaten en de runtimes.

Simctl List commando

Het toont ook de huidige status van de apparaten, of het nu Booted of Shutdown is.

Volgende leert u een simulator te maken en te starten vanaf de opdrachtregel.

Simulator maken vanaf de opdrachtregel

Voordat u een nieuwe simulator maakt, verwijdert u de Demo-simulator die u via Xcode hebt gemaakt. Voer het volgende in:

xcrun simctl delete Demo

Het verwijdercommando identificeert een simulator en verwijdert deze. Maak nu een nieuwe simulator vanaf de opdrachtregel.

Voer het volgende in:

xcrun simctl create Demo "iPhone 12 Pro" "iOS14.2"

Het commando create neemt een apparaattype en runtime op en maakt een simulator. Dit creëert een iPhone 12 Pro simulator met iOS 14.2 runtime.

Nu toont Terminal de unieke identifier van het nieuwe apparaat.

Simctl Create commando

Voer het volgende in:

xcrun simctl boot Demo

Hiermee wordt de Demo simulator gestart. Deze bevindt zich standaard in de status Shutdown.

Nu installeert u RayWonders met behulp van de opdrachtregel. U heeft eerst de app bundle nodig. Volg deze stappen:

  1. Open de Projectnavigator en selecteer RayWonders.app, die zich in de map Products bevindt.
  2. RayWonders in Projectnavigator

  3. Klik met de rechtermuisknop en selecteer Show in Finder.
  4. RayWonders in Finder-venster

  5. Kopieer RayWonders naar je homedirectory.

Open Terminal en navigeer naar de home directory door het volgende in te voeren:

cd ~

Naar aanleiding hiervan voert u het volgende uit:

xcrun simctl install Demo RayWonders.app

Het install commando installeert RayWonders op de simulator. Goed gedaan!

Je kunt de app zelfs starten met simctl. Voer het volgende in:

xcrun simctl launch Demo com.raywenderlich.RayWonders

Het commando launch neemt de app bundel ID als parameter. RayWonders start op in de Demo simulator.

Gefeliciteerd! U heeft nu een simulator gemaakt, opgestart, geïnstalleerd en gestart vanaf de commandoregel. Hier zijn enkele andere opties die u kunt proberen:

  • terminate: Hiermee wordt een toepassing beëindigd met behulp van de bundel-identifier.
  • erase: Hiermee wordt de inhoud van het apparaat gewist.
  • uninstall: Hiermee verwijdert u de toepassing. U moet de bundel-identifier van de applicatie opgeven.

Volgende leert u enkele coole commando’s die beschikbaar zijn voor uw app.

Screenhots maken

Screenhots van uw app kunnen nuttig zijn in verschillende scenario’s. Je hebt bijvoorbeeld screenshots nodig bij het indienen van je app in de AppStore.

Voer het volgende commando in:

xcrun simctl io Demo screenshot screenshot.png --type="png"

Dit maakt een screenshot van het huidige scherm en slaat het op in het bestand screenshot.png. Naast een png ondersteunt het screenshot commando ook andere bestandsformaten, zoals TIFF, BMP, GIF en JPEG.

Een screenshot kan laten zien hoe uw app eruit ziet, en een foto zegt meer dan duizend woorden. Een video is echter nog veel meer waard. :]

Video opnemen

U kunt video’s van uw app opnemen met simctl. Om de opname te starten, voert u het volgende commando in:

xcrun simctl io Demo recordVideo Demo.mov --codec="h264"

Interactie met RayWonders op de simulator. Druk op Control-C in de terminal als u klaar bent. Dit slaat de video op in Demo.mov.

Bovendien kunt u bij de opname de gewenste codec opgeven. De standaardcodec is hevc.

Video opnemen met opdrachtregel

Het recordVideo-commando helpt voorkomen dat u een QuickTime-speler moet gebruiken om een video van uw app op te nemen.

De statusbalk aanpassen

Kijk op de statusbalk van de app in de simulator. U ziet dat de batterij vol is, dat het apparaat het beste signaal heeft en dat de tijd op de simulator uw lokale Mac-tijd is. Wat doet u als u deze wilt opheffen?

Voer het volgende commando in Terminal in:

xcrun simctl status_bar Demo override \ --dataNetwork 4g --cellularBars 2 --batteryState charging \ --batteryLevel 25 --time 12:05

Dit overschrijft de statusbalk om in te stellen:

  • Datanetwerk als 4G
  • Cellulair signaal naar twee balken
  • Batterijstatus naar opladen en het batterijniveau naar 25%
  • Tijd op de simulator naar 12:05

Statusbalk in RayWonders

Wanneer u dit in uw eigen project doet, kunt u de informatie op de statusbalk instellen op wat u maar wilt.

Het status_bar commando kan erg handig zijn wanneer u het uiterlijk van uw app screenshots en video’s wilt aanpassen.

Wanneer u klaar bent, zet u de statusbalk terug naar het standaard uiterlijk door het volgende in te voeren:

xcrun simctl status_bar Demo clear

Debuggen en Diagnose

Simctl biedt ook verschillende commando’s om te helpen bij het debuggen en diagnosticeren van problemen.

Ga terug naar Terminal, en voer het volgende in:

xcrun simctl get_app_container Demo com.raywenderlich.RayWonders

get_app_container drukt het pad van de app-bundel af.

Get app container met behulp van Simctl

U kunt de gegevens binnen de app container inspecteren met behulp van dit pad. Bovendien kunnen de logboeken van de simulator erg nuttig zijn bij het debuggen van problemen.

Nu typt u het volgende in Terminal:

xcrun simctl spawn Demo log stream

Dit start het streamen van alle logboeken van de Demo-simulator.

Stream simulator logs

Het kan echter voorkomen dat dit te veel gegevens zijn om te inspecteren. Druk op Control-C om de stream te stoppen.

Probeer het volgende:

xcrun simctl spawn Demo log stream | grep com.raywenderlich.RayWonders

Dit filtert de logs en toont alleen die van RayWonders.

Stream RayWonders logs

Als u met de app werkt, zult u meer logs in de terminal zien verschijnen. Deze logboeken kunnen zeer nuttig zijn bij het melden van een bug of het geven van feedback aan Apple.

Type het volgende:

xcrun simctl diagnose

Het diagnose-commando verzamelt een heleboel gegevens, waaronder logboeken en crashes. Het genereert ook bestanden die Apple kunnen helpen bij het debuggen van problemen. Standaard zijn de verzamelde logs voor het opgestarte apparaat. Door de UDID van een apparaat op te geven, kun je de verzameling logs beperken tot dat specifieke apparaat.

Je bent nu een simulator commando-regel expert geworden! U kunt nog een stap verder gaan door veelvoorkomende acties te automatiseren met behulp van Bash scripts.

Automeren met behulp van een Bash script

Nu gaat u een script maken om een simulator te klonen en RayWonders in een andere locale te starten.

Open eerst Terminal, en voer het volgende in:

Dit maakt een nieuw bestand aan met de naam sim_utility. De extensie .sh geeft aan dat het een shell script is.

Opmerking: U kunt het script overal in uw bestandssysteem maken. Voor organisatorische doeleinden in het voorbeeld project, is het script geplaatst in de `Scripts` map.

Volgende, voer uit:

chmod +x sim_utility.sh

Dit maakt de sim_utility.sh uitvoerbaar, zodat u het kunt uitvoeren.

Open sim_utility.sh in een editor, en voeg het volgende toe:

#!/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 gebeurt het volgende:

  1. Het script neemt een opdrachtnaam en een simulatornaam op als opdrachtregelparameters.
  2. get_id_of_simulatorget_status_of_simulator en launch zijn lege stubs die je hierna zult implementeren.
  3. Het script ondersteunt momenteel één commando met de naam launch. De launch heeft drie extra parameters, die je binnenkort zult implementeren.

In get_id_of_simulator, vervangt u #TODO door het volgende:

xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH-2 )}'

get_id_of_simulator zoekt in de lijst van een simulator naar de naam die als parameter is opgegeven. Als er een overeenkomst wordt gevonden, krijgt de substring-operatie de unieke identificatiecode van de simulator.

In de methode get_status_of_simulator vervangt u #TODO door het volgende:

xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH - 2 )}'

get_status_of_simulator zoekt naar een simulator met een overeenkomende naam in de lijst met apparaten. Als het een overeenkomst vindt, krijgt het de status van de simulator – opgestart of uitgeschakeld. U gebruikt deze in de launch.

Het implementeren van Launch

In launch, vervangt u #TODO door het volgende:

#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)"

Bewaar het bestand. Hier is wat dit doet, stap voor stap. Het:

  1. Geeft extra parameters aan launch, inclusief de bundel ID van de applicatie, de locale en de taal om je app in te starten. Het declareert een lokale variabele CLONE_NAME, dat is de naam van het gekloonde apparaat. In dit geval is de naam van het gekloonde apparaat de locale die u opgeeft;
  2. Haalt de ID van de simulator op door get_id_of_simulator op te roepen. Vervolgens wordt het resultaat opgeslagen in SIMULATOR_ID. Als er geen overeenkomende simulator is, verlaat het programma het programma;
  3. Vraagt de status van de simulator op door get_status_of_simulator op te roepen. Als de status Booted is, wordt het shutdown commando uitgevoerd om het af te sluiten. Om gekloond te worden, moet een apparaat worden uitgeschakeld;
  4. Kloont de simulator met behulp van het clone commando;
  5. Boot zowel de originele simulator als de gekloonde simulator met behulp van het boot commando;
  6. Lanceert de app op de oorspronkelijke simulator met behulp van het launch-commando;
  7. Lanceert de app met behulp van het launch-commando op de gekloonde simulator.

Lanceert RayWonders in een andere locale

Open Terminal, en voer het volgende uit:

./sim_utility.sh launch Demo com.raywenderlich.RayWonders hi_IN hi

RayWonders wordt gelanceerd in het Hindi op een gekloonde simulator met de naam hi_IN.

RayWonders in het Hindi

Niet meer naar de instellingen gaan en de taal van het apparaat wijzigen om je app te testen. Je kunt je app nu in meerdere talen tegelijk bekijken. Goed gedaan!

Opmerking: Als u problemen ondervindt bij het uitvoeren van het script, controleer dan of u slechts één simulator hebt met de naam Demo. U kunt het aantal beschikbare simulators controleren door xcrun simctl list | grep Demo in de terminal uit te voeren. Verwijder eventuele dubbele simulators en probeer het opnieuw.

RayWonders ondersteunt ook een paar andere talen. Voer het volgende uit:

./sim_utility.sh launch Demo com.raywenderlich.RayWonders ja_Jp ja

RayWonders start nu in het Japans op een nieuwe simulator.

RayWonders in het Japans

Als een leuke uitdaging, implementeer nog twee commando’s in het sim_utility script.

  • Cleanup: Dit verwijdert een simulator gegeven een simulatornaam.
  • Help: Hiermee wordt een menu afgedrukt met alle commando’s die door het script worden ondersteund.

U vindt de definitieve versie van het script met al deze opties geïmplementeerd in de map Scripts in de gedownloade materialen.

Waarheen vanaf hier?

Download het project door te klikken op de knop Download Materialen boven of onder aan deze pagina.

In deze tutorial hebt u veel nuttige simulator- en opdrachtregelopties geleerd. Bekijk voor meer informatie deze WWDC-video’s:

  • Haal het meeste uit de Simulator
  • Word een Simulator-expert

Ik hoop dat je hebt genoten van deze tutorial. Als je vragen of opmerkingen hebt, doe dan mee aan de forumdiscussie hieronder.

raywenderlich.com Weekly

De raywenderlich.com nieuwsbrief is de makkelijkste manier om op de hoogte te blijven van alles wat je moet weten als mobiele ontwikkelaar.

Wekelijks ontvangt u een overzicht van onze tutorials en cursussen, en als bonus ontvangt u een gratis diepgaande e-mailcursus!

Gemiddelde beoordeling

5/5

Voeg een beoordeling voor deze inhoud toe

Meld u aan om een beoordeling toe te voegen

9 beoordelingen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *