Debugging van mobiele apps

MobileTogether is een tool voor het ontwikkelen van complexe, elegante en platformonafhankelijke oplossingen. Ontwikkelaars hebben tools nodig om mobiele apps te debuggen, zodat ze problemen kunnen oplossen tijdens de ontwikkeling en het gedrag van de app kunnen begrijpen. De MobileTogether Designer biedt uitgebreide debuggingmogelijkheden voor de uitvoering van apps, zowel binnen actiehiërarchieën als voor XPath/XQuery-functies. Deze functies zijn beschikbaar in twee debugweergaven voor mobiele apps, geïntegreerd in één tool.

De weergave "Actions Debugger" stelt ontwikkelaars in staat om de acties van een controle- of paginagebeurtenis te debuggen. Deze weergave is beschikbaar wanneer een actie die is geselecteerd voor debugging wordt tegengekomen tijdens de verwerking. De weergave "XPath Debugger" opent het venster voor de XPath/XQuery-evaluator, waarmee gedetailleerde traceer- en debugmogelijkheden voor expressies beschikbaar zijn.

Ontwikkelaars kunnen pauzepunten instellen op verschillende locaties en de app vervolgens stap voor stap uitvoeren, waarbij de uitvoering op elk moment kan worden onderbroken om de volledige uitvoeromgeving te kunnen onderzoeken.

Laten we eens kijken hoe het debuggen van mobiele apps in de praktijk werkt:

In een eerdere post over programmeertechnieken voor mobiele ontwikkeling, gebruikten we een app voor luchtkwaliteit om een subroutine in een mobiele app te illustreren. De subroutine, geïmplementeerd als een actiegroep in MobileTogether, berekende de lokale tijd van een luchtkwaliteitsmeting op basis van gegevens die werden geretourneerd door een API. Deze gegevens bestonden uit een tijdstempel in GMT en een correctiewaarde. We kunnen de subroutine debuggen om ervoor te zorgen dat onze berekeningen correct zijn.

Allereerst plaatsen we een "breakpoint" (onderbrekingspunt) bovenaan de actiegroep voor de lokale tijd van Calc, zodat de uitvoering wordt onderbroken wanneer de subroutine wordt aangeroepen:

U kunt zoveel pauzepunten toevoegen als u nodig heeft, en u hoeft zich geen zorgen te maken over het later opnieuw vinden ervan. Ze worden beheerd via het hoofdmenu "Debug":

We hebben ook het menu gebruikt om de optie "Stop bij volgende breakpoint" in te stellen. Nu kunnen we onze app in de simulator uitvoeren, en deze zal normaal werken totdat de actiegroep "Calc local time" wordt aangeroepen.

De afbeelding hieronder toont het scherm van de simulator wanneer de app is gestopt bij het controlepunt. De gebruiker heeft een rapport voor de stad Londen geselecteerd, de app heeft de API aangeroepen, en nu wil de app de lokale tijd berekenen op basis van de ontvangen gegevens:

Aan de linkerzijde van het scherm zijn twee debugvensters geopend. Bovenaan zien we de acties die uitgevoerd zullen worden, met een rode breakpoint en een groene pijl die de huidige stap aangeven. In het venster eronder zien we de callstack van acties die leiden tot de actiegroep.

De plusknoppen in het callstack-scherm tonen de waarden van de parameters die zijn meegegeven toen de actiegroep werd aangeroepen. We kunnen op de knop "Stap voor stap verder" bovenaan klikken om de uitvoering stap voor stap voort te zetten:

Wacht even, bevindt Londen zich niet in dezelfde tijdzone als Greenwich, in het Verenigd Koninkrijk, en heeft het dan geen tijdsverschil met GMT nodig? Ik heb al mijn slimme assistenten en alle zoekmachines om dit te vragen, en ze vertelden me dat zowel Londen als Greenwich de Britse zomertijd gebruiken, die een uur voorloopt op GMT.

Hoe dan ook, dat zijn de gegevens die de API ons heeft gegeven, dus we kunnen verdergaan. Als we de commentaren bekijken, komen we bij de eerste actie "Update Node":

De localDateTime-knop wordt ingesteld op de waarde van de parameter $time.

Volgende stap:

De letter "T" wordt tussen de datum en de tijd geplaatst om de syntaxis te laten overeenkomen met die welke vereist is voor de functie "add-hours-to-dateTime()".

Volgende stap:

De extra uren worden bijgeteld.

Volgende stap:

Zijn er nog aanpassingen nodig? Nee.

Volgende stap:

Vervang de letter T door een spatie.

Volgende stap:

De commentaarregel markeert het einde van de Actiegroep. Nu kunnen we de groene knop "Uitvoeren" bovenaan gebruiken om de normale uitvoering van de app voort te zetten. Een subpagina wordt geopend om de luchtkwaliteitsindex weer te geven:

De debugfunctie van de mobiele app, die de acties weergeeft, bevestigde dat onze logica correct was.

Maar het is behoorlijk omslachtig en onnodig om het tussenresultaat bij elke stap op te slaan. We zouden de stappen moeten combineren tot één enkele formule:

De drie oorspronkelijke acties zijn uitgeschakeld en vervangen door één actie die een complexe expressie bevat. We kunnen de XPath-debugger gebruiken om deze expressie te testen.

We hadden naadloos tussen de verschillende weergaven kunnen schakelen, maar we hebben de eerste debugsessie onderbroken om de expressie te bewerken. Nu gaan we deze nieuwe versie uitvoeren in de simulator. Deze keer, wanneer het programma stopt bij het breakpoint, gebruiken we de knop "Stap in XPath" om het debuggen van de mobiele app te starten in de weergave "XPath/XQuery Debugger":

Het venster voor de XPath/XQuery-evaluator wordt geopend en de debugger begint de expressie te evalueren:

Nu gaan we de knop "Stap in" in het XPath-venster gebruiken, en we gaan verder met het doorlopen van de expressie:

De vakken onderaan de afbeelding geven de inhoud weer van de parameters die werden meegegeven toen de actiegroep werd aangeroepen. De bron van de variabele $time was een JSON-object dat stringgegevens bevatte en die door de API werden geretourneerd.

Volgende stap:

Binnen de expressie is het nog steeds nodig dat de variabele 'T' voldoet aan de syntaxis van de functie add-hours-to dateTime().

Volgende stap:

Nu zijn we er echt in gedoken en hebben we de bewerking voltooid. Bij deze uitvoering was de oorspronkelijke waarde van de parameter $time 2020-08-03 07:00:00 en de waarde van $adj voor de aanpassing was -07:00. Op dit moment is ons resultaat 2020-08-03T00:00:00.

De volgende stap is een test om te bepalen of een aanpassing nodig is voor de minuten. De parameter "adj" eindigt op "00", waardoor die test mislukt. Vervolgens wordt de "T" vervangen en de subpagina wordt weergegeven:

Als u applicaties ontwikkelt voor verschillende platforms, heeft u een tool nodig met functies voor het debuggen van mobiele apps. Bekijk onze MobileTogether videodemonstraties, bekijk meer voorbeeldapplicaties, of raadpleeg zelfs de online handleiding voor een gedetailleerd overzicht van alle informatie. Wanneer u klaar bent om aan de slag te gaan en uw eigen mobiele applicaties voor verschillende platforms te ontwikkelen, download de MobileTogether Designer om te beginnen.