Wat is een foutopsporingsapplicatie voor Android. Testen op een echt apparaat

Op elke smartphone of tabletcomputer die op het Android-platform draait, ongeacht de fabrikant en de vooraf geïnstalleerde besturingssysteemversie, is het mogelijk om speciale functie, wat de “Debug-modus” wordt genoemd. Het proces voor het activeren van deze functionaliteit varieert echter. Feit is dat het allemaal afhangt van de versie van het geïnstalleerde systeem.

In dit artikel zullen we dieper ingaan op de vraag hoe u USB-foutopsporing op Android kunt inschakelen, zoals op eerdere versies OS, en op de nieuwste versies. We zullen ook kijken naar de vraag welke taken deze modus moet oplossen.

Laten we eerst eens kijken voor welke doeleinden de gemiddelde gebruiker deze modus mogelijk moet activeren.

Zoals je misschien wel vermoedt, is dit nodig voor het debuggen van applicaties en de apparaten zelf. In eenvoudiger bewoordingen is het bedoeld om de functionaliteit van programma's te testen en is het daarom in de eerste plaats erg populair onder ontwikkelaars software. Voor gewone stervelingen is het echter ook waardevol, omdat je hiermee via een pc met Android kunt communiceren en programma's (voornamelijk ADB) kunt gebruiken die op afstand verschillende manipulaties met het apparaat kunnen uitvoeren.

Activeringsprocedure op verschillende versies

Android-versie 2.0 - 3.0

Als u een oud Android-apparaat heeft waarop versie 2.0 en 3.0 zijn geïnstalleerd, moet u een paar eenvoudige stappen uitvoeren om foutopsporing te activeren:

Android-versie 4.0, 5.0 en 6.0

Op Android-versies vier, vijf en zes moet je een beetje sleutelen, omdat de foutopsporingsmodus daarin zorgvuldig verborgen is voor de ogen van de gebruiker.

Hoe de modus in te schakelen USB debugging op de nieuwste versies van Android? Om dit te doen, moet u de volgende stappen ondernemen:

Wat moet ik doen als het apparaat niet wordt gedetecteerd wanneer foutopsporing is ingeschakeld?

Zoals de praktijk laat zien, bevinden gebruikers zich vaak in situaties waarin, na het inschakelen van de foutopsporingsmodus, de smartphone of Tablet computer om de een of andere reden. Wat moet de gebruiker in dit geval doen?

  • Allereerst moet u controleren of de nieuwste versie van de stuurprogramma's voor het detecteren van een apparaat via USB op uw computer is geïnstalleerd. Probeer uw stuurprogramma's bij te werken door ze te downloaden laatste versie van de website van de fabrikant van het apparaat.
  • Controleer of uw apparaat is vergrendeld. Bij aansluiting op een computer wordt aanbevolen het slot te verwijderen.
  • Controleer de poorten waarop het snoer wordt aangesloten. Ja, voor meer correcte werking beter gebruiken USB-poorten 2.0, zal er een betere compatibiliteit ermee zijn.

Foutopsporing via Wi-Fi

In een situatie waarin u de foutopsporingsmodus gebruikt door USB-Android Dat is niet mogelijk, u kunt proberen verbinding te maken via Wi-Fi.

Belangrijk! Zorg ervoor dat u ROOT-rechten op uw apparaat hebt voordat u begint. Deze instructie alleen relevant voor besturingssysteem Windows 7, momenteel het meest gebruikelijk op pc's.

  1. Eerst moet u het IP-adres en de poort van uw apparaat achterhalen. Voor dit doel kunt u het programma gebruiken. Het is beschikbaar in de appstore Google Spelen.
  2. Download het programma en voer het uit.
  3. Informatie over het huidige IP-adres zou onderaan moeten verschijnen.
  4. Ga op uw pc naar “Start” - “Alle programma's” - “Accessoires”. Zoek en selecteer Opdrachtprompt in de lijst met toepassingen.
  5. Voer in de geopende console de volgende opdracht in: adb connect 192.168.0.1:8555. Dat is alles. Android-verbinding is voltooid. Nu kunnen alle manipulaties met ADB worden uitgevoerd via draadloze Wi-Fi-technologie.

Foutopsporing uitschakelen

Gebruik de volgende instructies om foutopsporing uit te schakelen:

Conclusie

Dankzij ons materiaal weet je nu hoe je USB-foutopsporing op Android inschakelt, en waarom en in welke gevallen de gemiddelde eigenaar van een smartphone of tablet deze functie nodig heeft.

Laten we u eraan herinneren dat USB-foutopsporing nuttig is systeem hulpmiddel, waarmee de gebruiker de firmware opnieuw kan installeren, software van derden kan downloaden en installeren, zijn mobiele apparaat kan synchroniseren met een pc, enzovoort. Geavanceerde gebruikers zal in staat zijn “Superuser”-rechten te verkrijgen en in sommige gevallen zelfs het systeem te herstellen als het niet meer normaal werkt.

De USB-foutopsporingsmodus is een speciale functie van Android-apparaten, die vooral nodig is voor ontwikkelaars. Met zijn hulp kunt u de functionaliteit van de applicatie controleren en in verschillende situaties testen. Maar de debug-modus is ook handig voor gebruikers. Laten we eens kijken waarom het nuttig kan zijn, hoe u het kunt in- en uitschakelen op Android-apparaten.

Waarom heb je de USB-foutopsporingsmodus nodig op Android OS?

Met de foutopsporingsmodus kunnen gebruikers:

  • Test de applicatie die wordt ontwikkeld.
  • Krijg root-toegang tot uw smartphone of tablet.
  • Kopieer en verplaats bestanden van uw Android-apparaat naar uw computer.
  • Installeer een derde partij die op uw computer is gedownload (niet van Speel Markt) applicatie voor Android.
  • Installeer verschillende firmwareversies voor het apparaat.
  • Herstel een kapot apparaat.
  • Creëren backup kopie bestanden en applicaties.

Bovendien hebt u in de foutopsporingsmodus toegang tot systeemprocessen en kunt u veranderingen in het gedrag van RAM, processor en andere componenten analyseren.

Hoe u de USB-foutopsporingsmodus op uw apparaat inschakelt

De optie “USB-foutopsporing inschakelen” bevindt zich in het “Ontwikkelaarsmenu” (of “Ontwikkelaarsopties”), dat verborgen is voor gebruikers in Android-versies hoger dan 4.2. Maar nogmaals, sommige fabrikanten besluiten de toegang tot het menu te openen, anderen besluiten het te verbergen. Op Meizu-smartphones is het ontwikkelaarsmenu bijvoorbeeld altijd geopend en bevindt het zich in de " Speciale vaardigheden", en op apparaten Samsung-toegang naar het menu is gesloten. Het hangt allemaal niet alleen af ​​van het bedrijf, maar ook van specifiek model apparaten.

Dus als de toegang tot het ontwikkelaarsmenu op uw apparaat is geblokkeerd, doet u het volgende: open in de apparaatinstellingen het tabblad 'Over apparaat' en klik op het item 'Buildnummer' totdat er een melding verschijnt dat u de ontwikkelaarsstatus heeft gekregen en u kunt gebruik maken van het speciale menu.

Ga nu naar dit menu. Afhankelijk van het model kan het menu-item zich in verschillende secties van het instellingenmenu bevinden. Ofwel in de apparaatinstellingen kan er onmiddellijk een sectie "Voor ontwikkelaars" zijn ("Ontwikkelaarsopties", "Ontwikkelaarsmenu"), of het kan een subsectie zijn van de items "Toegankelijkheid", "Overig", "Meer", "Geavanceerd Instellingen".

Wanneer u het ontwikkelaarsmenu opent, vinkt u het vakje aan naast "USB-foutopsporing inschakelen" (of "USB-foutopsporingsmodus"). Meestal komt dit item op de eerste plaats.

Waar bevindt de modus zich in verschillende versies van Android (fotogalerij)

Het ontwikkelaarsmenu bevindt zich in het gedeelte 'Meer'. In Android 2.2–3.0 bevindt het item 'USB-foutopsporing' zich in het gedeelte 'Toepassingen'. In Android 4.2 en hoger is het ontwikkelaarsmenu verplaatst naar het gedeelte 'Instellingen'

Video-instructie: hoe u de USB-foutopsporingsmodus op Android inschakelt

Hoe u de USB-foutopsporingsmodus kunt inschakelen als dit niet vanaf het apparaat kan worden gedaan

Er zijn manieren om de foutopsporingsmodus in te schakelen, zelfs als dit niet op het apparaat zelf kan worden gedaan vanwege bijvoorbeeld een kapot scherm, een kapot touchscreen of problemen met het apparaat als geheel.

De belangrijkste voorwaarde: op uw apparaat moet al een herstelprogramma van derden zijn geïnstalleerd: CWM of TWRP. Dit is nodig om volledige root-toegang tot het besturingssysteem te kunnen krijgen.


Na het opnieuw opstarten kunt u met uw smartphone of tablet werken met QtADB, MyPhoneExplorer, ADB en andere soortgelijke programma's. Dat wil zeggen, met behulp van de USB-foutopsporingsmodus.

Wat te doen als niets werkt

Om met USB-foutopsporing te werken, worden speciale ADB-stuurprogramma's gebruikt (Android Debug Bridge, letterlijk "bridge voor Android-foutopsporing"), die kunnen worden gedownload van de Google-website, Officiële Pagina te vinden op: https://developer.android.com/studio/index.html. Laten we eens kijken wat we moeten doen als ADB het apparaat niet detecteert, waarom het onmogelijk is om de USB-foutopsporingsmodus te gebruiken.

Zorg ervoor dat uw mobiele apparaat door uw computer wordt gedetecteerd. Voor deze:

  1. Controleer de USB-kabel op schade. Speciale aandacht Let op sterke bochten en gedeelten van de kabel in de buurt van de stekkers waar aansluitdraden vaak breken. Probeer een andere kabel te gebruiken om verbinding te maken. Als het probleem echt een fysiek defect is, vervang dan de kabel.
  2. Probeer de stekker in een andere USB-poort van uw computer te steken. Het is raadzaam om de poorten aan de achterkant te gebruiken systeemonderdeel, aangezien de achterste poorten zich direct aan de zijkant bevinden moederbord. De USB-poorten aan de voorkant zijn niet altijd correct aangesloten, wat het probleem veroorzaakt.
  3. Probeer uw Android-apparaat aan te sluiten op een andere computer. Soms komt het voor dat een bepaalde pc een smartphone of tablet ten onrechte herkent en daar niet de benodigde gegevens uit leest. Als het apparaat correct wordt herkend op een andere computer, breng dan uw pc ter reparatie en leg het probleem uit, aangezien de oorzaken van de problemen verschillend kunnen zijn.
  4. Probeer alle USB-apparaten los te koppelen van uw computer. Sommige daarvan kunnen ervoor zorgen dat uw smartphone of tablet geen normale verbinding met uw pc kan maken.

Zorg ervoor dat je gebruikt officiële firmware fabrikant van het apparaat. Als je het op een smartphone of tablet hebt geïnstalleerd firmware van derden(zoals CyanogenMod of iets dergelijks), dan werkt USB-foutopsporing mogelijk niet correct.

Zorg ervoor dat u de juiste ADB-stuurprogramma's hebt geïnstalleerd. Er zijn verschillende versies van stuurprogramma's voor verschillende apparaten. Ze worden allemaal verdeeld volgens smartphone- en tabletmodellen op de officiële website. Er zijn ook universele ADB-stuurprogramma's, maar het is beter om deze alleen te gebruiken als er geen apart stuurprogramma voor uw apparaat is, aangezien er bij universele stuurprogramma's verbindingsproblemen kunnen optreden die alleen met Google-ondersteuning kunnen worden opgelost.

Het is beter voor softwareontwikkelaars om het systeem te gebruiken in plaats van individuele ADB-stuurprogramma's Android-studio, die ook kan worden gedownload van de officiële website: developer.android.com. Op Android Studio-opstelling drivers gebeurt automatisch, bovendien is er Android-emulator voor een computer, dus USB-foutopsporing is mogelijk niet nodig.

USB-foutopsporing uitschakelen

Om de USB-foutopsporingsmodus op Android-apparaten uit te schakelen, opent u het ontwikkelaarsmenu en schakelt u de optie USB-foutopsporing gebruiken uit.

De USB-foutopsporingsmodus is een uiterst nuttig hulpmiddel, niet alleen voor softwareontwikkelaars, maar ook voor gewone gebruikers operatiekamer Android-systemen. Met zijn hulp kunt u firmware op uw mobiele apparaten installeren en opnieuw installeren, bestanden van een smartphone of tablet naar een computer verplaatsen, downloaden naar Android Toepassingen van derden. De mogelijkheid om de USB-foutopsporingsmodus te gebruiken zal ook van pas komen in gevallen waarin het apparaat niet meer correct werkt, omdat u zich dan kunt verdiepen in systeem processen, waarmee u problemen en storingen kunt opsporen. Bovendien helpt USB-foutopsporing u om root-toegang tot het apparaat te krijgen, wat de mogelijkheden van het besturingssysteem aanzienlijk zal uitbreiden.

Nadat we de eerste versie van onze programmacode hebben geschreven, willen we deze natuurlijk uitvoeren en testen om potentiële problemen op te sporen (of gewoon om te pronken). Er zijn twee manieren om dit te doen: voer de applicatie uit echt apparaat aangesloten op een computer via een USB-kabel; bel de emulator die is opgenomen in de SDK en test de applicatie erop.

In beide gevallen moeten we wat werk verzetten om ons programma in actie te zien.

Het apparaat aansluiten

Voordat u een apparaat aansluit om te testen, moet u ervoor zorgen dat het door het besturingssysteem wordt herkend. Op Windows moet u hiervoor het juiste stuurprogramma installeren, dat deel uitmaakt van de SDK-installatie die we eerder hebben geïnstalleerd. Sluit eenvoudigweg het apparaat aan en volg de instructies om het standaard Windows-stuurprogramma te installeren, waarbij u naar het stuurprogramma/de map in uw SDK-installatiemap wijst. Stuurprogramma's voor sommige apparaten moeten worden gedownload van de websites van hun fabrikanten. Op Linux en Mac OS X is het meestal niet nodig om de stuurprogramma's afzonderlijk te installeren; deze worden meegeleverd met het besturingssysteem. Afhankelijk van de versie van Linux moet je mogelijk een paar extra stappen uitvoeren (meestal een nieuw regelbestand voor udev maken). De reeks acties kan variëren voor verschillende apparaten. Zoeken op internet kan u daarbij helpen.

Een virtueel Android-apparaat maken

De SDK wordt geleverd met een emulator die zogenaamde Android Virtual Devices (AVD's) draait. Dit virtuele apparaat bestaat uit een afbeelding specifieke versie Android-besturingssysteem, shell en een reeks kenmerken, waaronder weergaveresolutie, geheugenkaartgrootte, enz. Om een ​​nieuwe AVD te maken, moet u de SDK en AVD-manager uitvoeren. U kunt dit doen zoals beschreven in de SDK-installatie-instructies, of rechtstreeks in Eclipse door op de knop SDK-beheer op de werkbalk te klikken.

1. Selecteer Virtuele apparaten in de lijst aan de linkerkant. Als gevolg hiervan ziet u een lijst met beschikbare virtuele apparaten. Als u SDK-beheer nog niet eerder hebt gebruikt, deze lijst zal leeg zijn; Laten we deze stand van zaken veranderen.

2. Om een ​​nieuwe AVD te maken, klikt u op de knop Nieuw aan de rechterkant. Er verschijnt een dialoogvenster (Fig. 2.7).

Rijst. 2.7. Dialoogvenster voor het maken van AVD in SDK-beheer

3. Elk virtueel apparaat heeft een naam (Naamveld) waarmee u er later naar zult verwijzen. Target definieert de versie van Android die de AVD moet gebruiken. Daarnaast bepaal je zelf de geheugenkaartcapaciteit voor de AVD, evenals de schermresolutie. Voor onze eenvoudig projectje hel1® world kan worden geselecteerd als doel voor Android 1.5, waarbij andere parameters ongewijzigd blijven. Bij echte tests moet u meestal meerdere virtuele apparaten maken om de applicatie op te testen verschillende versies Besturingssysteem en schermformaten.

OPMERKING

Als je geen echte Android-apparaten met verschillende versies en met verschillende schermen hebt, is het handiger om een ​​emulator te gebruiken voor extra testen van de compatibiliteit van applicaties.

Het starten van de applicatie

Nu u uw apparaten en AVD hebt ingesteld, kunt u eindelijk uw applicatie starten. In Eclipse doet u dit eenvoudigweg door met de rechtermuisknop op het hello world-project in de weergave Pakketverkenner te klikken en Uitvoeren als Android-applicatie te selecteren (of door op de knop Uitvoeren op de werkbalk te klikken). Als gevolg hiervan zal de omgeving uitvoeren achtergrond de volgende acties.

1. Compileert het project in een ARK-bestand (als er sinds de laatste compilatie wijzigingen in de bestanden zijn geweest).

2. Creëer nieuwe configuratie lanceren voor Android-project als het nog niet bestaat (we zullen het binnenkort over de lanceringsconfiguratie hebben).

3. Installeer en start de applicatie door een nieuwe emulator te starten of een reeds actieve emulator van de overeenkomstige versie van Android te gebruiken, of door deze te implementeren en te starten op een aangesloten apparaat (waarop ook een OS-versie is geïnstalleerd die niet lager is dan de opgegeven versie in de parameter Min SDK-versie bij het maken van het project).

Als u zojuist een AVD voor Android 1.5 hebt gemaakt (zoals hierboven beschreven), zal de ADT-plug-in voor Eclipse een nieuw exemplaar van de emulator starten, het hello world-project ARC erop implementeren en de applicatie starten. Aan de uitgang zie je iets dat lijkt op Fig. 2.8.

De emulator werkt vrijwel precies als een echt apparaat en u kunt ermee communiceren met uw muis alsof u uw vinger gebruikt. Er zijn echter verschillende verschillen met het werken met een echt apparaat.

De emulator ondersteunt geen multitouch. Beweeg uw muisaanwijzer en doe alsof het een vinger is. De emulator mist enkele applicaties (bijvoorbeeld Android Market).

Het heeft geen zin om de monitor te schudden om de schermoriëntatie te veranderen. Gebruik in plaats daarvan de 7-toets op de extra nummeriek toetsenbord toetsenbord om het scherm te draaien. Om te voorkomen dat u in plaats daarvan het getal 7 typt, moet u eerst op Num Lock drukken.

Rijst. 2.8. De geweldige Hello World-app in actie.

De emulator is heel erg traag. Beoordeel de prestaties van uw app niet op basis van hoe snel deze op de emulator draait.

Op het moment van schrijven ondersteunt de emulator alleen OpenGL ES 1.0 met een paar extensies. Voor onze doeleinden is dit voldoende (behalve dat de implementatie van de grafische bibliotheek op de emulator last heeft van fouten en dat u soms niet dezelfde resultaten krijgt als op een echt apparaat). Onthoud voorlopig dat u geen applicaties die OpenGL ES gebruiken op een emulator moet testen.

Probeer het diverse acties met een emulator om eraan te wennen.

OPMERKING

Het starten van een nieuw exemplaar kost veel tijd (tot enkele minuten, afhankelijk van de kenmerken werkstation). Om tijd te besparen, verlaat u de emulator allemaal rennend ontwikkelingssessie zonder dat u deze elke keer opnieuw hoeft te starten.

Soms bij het starten van een Android-applicatie automatische selectie emulator/apparaat uitgevoerd door de ADT-plug-in wordt een belemmering. We hebben bijvoorbeeld meerdere apparaten of emulators aangesloten en willen het project op een daarvan testen. Om dit te bereiken, kunt u de automatische emulator-/apparaatselectie uitschakelen in de startconfiguratie van het Android-project. Trouwens, wat is een startconfiguratie?

De startconfiguratie biedt een manier om Eclipse precies te vertellen hoe uw toepassing moet worden gestart als u de juiste opdracht krijgt. Dit komt meestal tot uiting in de mogelijkheid om de opdrachtregelargumenten te bepalen die aan het programma worden doorgegeven, virtuele machine-argumenten (in het geval van desktop-applicaties in Java SE), etc. Eclipse en plug-ins van derden bieden verschillende opstartconfiguraties voor bepaalde types project. ADT is geen uitzondering: het voegt ook zijn eigen lanceerconfiguratie toe aan de set. Wanneer u onze Eclipse-toepassingen en ADT heeft een nieuwe gemaakt Android-configuratie Applicatie uitgevoerd met standaardparameters.

Volg deze stappen om toegang te krijgen tot de startconfiguratie van uw project.

1. Klik met de rechtermuisknop op het project in de weergave Pakketverkenner en selecteer Uitvoeren als – Configuraties uitvoeren.

2. Selecteer het hello world-project uit de lijst aan de linkerkant.

3. Aan de rechterkant van het venster kunt u de naam van de opstartconfiguratie wijzigen en andere instellingen aanpassen Android-tabbladen, Doel- en Commons-tabbladen.

4. Als u de implementatie wilt overschakelen van de automatische naar de handmatige modus, gaat u naar het tabblad Doel en selecteert u Handmatig.

Wanneer u nu de applicatie start, wordt u gevraagd de juiste emulator of het juiste apparaat voor implementatie te selecteren. Deze dialoog wordt getoond in Fig. 2.9. Voor de duidelijkheid heb ik verschillende virtuele apparaten met verschillende versies van het doelbesturingssysteem toegevoegd en ook twee echte apparaten met elkaar verbonden.

Rijst. 2.9. Een emulator/apparaat selecteren om de applicatie uit te voeren

Dialoog onthult alles emulators draaien en momenteel aangesloten apparaten, evenals andere AVD's die momenteel niet actief zijn.

Foutopsporing in de applicatie

Soms gedraagt ​​een app zich onverwacht of werkt niet meer. Om de oorzaak van het probleem te bepalen, moet u fouten in het programma kunnen opsporen. Eclipse en ADT bieden ongelooflijk krachtige functies voor Android-applicaties. We kunnen breekpunten in de code instellen, de waarden van variabelen opvragen, de huidige status van de stapel en nog veel meer.

Voordat u foutopsporing gaat gebruiken, moet u het bestand AndroidManifest.xml aanpassen. Dit punt is een beetje een kip-en-ei-probleem, omdat we nog niet eerder naar manifestbestanden hebben gekeken. Op in dit stadium Het enige dat we moeten weten is dat het manifestbestand enkele kenmerken van onze applicatie definieert. Een daarvan is de mogelijkheid om de applicatie te debuggen. Deze parameter wordt gespecificeerd in de vorm van een XML-tagattribuut . Om foutopsporing mogelijk te maken, voegen we eenvoudigweg het volgende attribuut aan de tag toe in manifestbestand: androi d:debuggable=true

Terwijl u uw toepassing ontwikkelt, kunt u dit kenmerk in het manifestbestand laten staan. Zorg er echter voor dat u het verwijdert voordat u het pakket naar de Android Market verzendt.

Nu u foutopsporing voor uw app heeft ingeschakeld, kunt u deze op een emulator of apparaat implementeren. Dit neemt meestal de vorm aan van het instellen van breekpunten om de status van het programma in bepaalde fasen te analyseren. Om een ​​breekpunt in te stellen, opent u het codebestand in Eclipse en dubbelklikt u in het grijze gebied vóór de gewenste coderegel. Om deze functie te demonstreren, doen we dit in regel 23 van de He1oWorl dActivity-klasse. Hierdoor stopt de debugger de uitvoering van het programma telkens wanneer op de schermknop wordt gedrukt. Het breekpunt wordt in de code-editor gemarkeerd met een kleine cirkel vóór de regel waar u het instelt (Figuur 2.10). Om het breekpunt te verwijderen, dubbelklikt u er nogmaals op in de code-editor.

Rijst. 2.10. Een breekpunt instellen

Het uitvoeren van een debug lijkt sterk op het proces van het uitvoeren van een applicatie zoals hierboven beschreven. Klik met de rechtermuisknop op het project in de weergave Pakketverkenner en selecteer Foutopsporing als – Android-applicatie. Hierdoor wordt een nieuwe debug-configuratie voor uw project gemaakt (net zoals u deed toen u het programma gewoon uitvoerde). U kunt de standaardinstellingen voor deze configuratie wijzigen door Debug As – Debug Configurations te selecteren in het contextmenu.

OPMERKING

In plaats van het contextmenu van het project in de weergave Pakketverkenner te gebruiken, kunt u het menu Uitvoeren gebruiken om uw toepassing uit te voeren en fouten op te sporen en toegang te krijgen tot de instellingen.

Als u voor de eerste keer een debugging-sessie start, zal Eclipse u vragen of u wilt overschakelen naar het Debug-perspectief, wat u zonder aarzeling kunt doen. Laten we dit perspectief eens bekijken. In afb. 2.11 toont zijn uiterlijk na het starten van het foutopsporingsproces van onze hell1o world-applicatie.

Rijst. 2.11. Debug-perspectief

Als u zich ons korte overzicht van Eclipse herinnert, weet u dat het verschillende perspectieven heeft, bestaande uit een reeks weergaven voor specifieke taken. Het Debug-perspectief ziet er heel anders uit dan het Run-perspectief.

De eerste van de nieuwe weergaven die opvalt is Debug in de linkerbovenhoek. Het toont alle momenteel actieve applicaties en de stapels van al hun threads als ze in debug-modus draaien.

Onder de Debug-weergave bevindt zich de codebewerkingsweergave waarmee we al kennismaakten toen we het Java-perspectief verkenden.

In de consoleweergave worden berichten van de ADT-plug-in weergegeven, zodat we weten wat er aan de hand is.

De LogCat-weergave zal een van onze beste vrienden worden bij het ontwikkelen van applicaties. Het toont een logboek met berichten afkomstig van systeemcomponenten, andere applicaties en ons programma. Het toont ook een stacktrace als de applicatie crasht en onze eigen realtime berichten. LogCat zal in de volgende sectie in meer detail worden besproken.

De overzichtsweergave is in dit perspectief niet erg nuttig. Waarschijnlijk bestudeer je variabelen en breekpunten, en je huidige positie in het programma zal je niet van nut zijn. Meestal sluit ik deze weergave vanuit het Debug-perspectief om meer ruimte voor anderen over te laten.

De weergave Variabelen is vooral handig voor foutopsporingsdoeleinden. Wanneer de debugger een breekpunt bereikt, hebben we de mogelijkheid om variabelen in de huidige programmacontext te onderzoeken en te wijzigen.

Ten slotte toont de weergave Breekpunten een lijst met de breekpunten die we hebben ingesteld.

Als je nieuwsgierig bent: je hebt waarschijnlijk al op een knop in een actieve applicatie geklikt om de debugger in actie te zien. Het stopt op lijn 23 volgens het ingestelde breekpunt. Het is u wellicht ook opgevallen dat er in de weergave Variabelen variabelen voor het huidige programmablok zijn verschenen, bestaande uit de activiteit zelf (this) en de methodeparameter (v). Door de lijst met variabelen uit te breiden, kunt u ze gedetailleerder verkennen.

In de weergave Foutopsporing wordt de stacktracering weergegeven die aan de huidige methode is gekoppeld. Houd er rekening mee dat er meerdere threads actief kunnen zijn, die u allemaal op elk moment kunt onderbreken in de weergave Foutopsporing. De regel waarop het breekpunt wordt ingesteld, wordt gemarkeerd, wat de positie in de programmacode aangeeft.

U kunt de debugger opdracht geven de huidige expressie uit te voeren (door op F6 te drukken), naar de methoden te stappen die door de huidige methode worden aangeroepen (door op F5 te drukken), of door te gaan met het uitvoeren van het programma zoals gewoonlijk (door op F8 te drukken). U kunt dezelfde doelen ook bereiken met behulp van het menu Uitvoeren. Houd er rekening mee dat er feitelijk meer foutopsporingsopties zijn dan ik u zojuist heb verteld. Zoals altijd moedig ik je aan om te experimenteren met wat je nodig hebt.

OPMERKING

Nieuwsgierigheid is de belangrijkste bouwsteen voor succesvolle ontwikkeling van Android-games. Om er het maximale uit te halen, moet u de ontwikkelomgeving goed leren kennen. maar ik kan niet alle details van Eclipse beschrijven, dus ik moedig je nogmaals aan om te experimenteren.

LogCat en DDMS

De ADT-plug-in installeert veel nieuwe weergaven en perspectieven voor gebruik in Eclipse. Een van de nuttigste weergaven (kort vermeld in de vorige sectie) heet LogCat.

LogCat is een gebeurtenisregistratiesysteem in Android waarmee systeemcomponenten en applicaties informatie op verschillende niveaus kunnen weergeven. Elke log-invoer bestaat uit de datum, tijd, logniveau, ID van het bronproces van de invoer, een tag (gedefinieerd door de applicatie zelf) en het bericht zelf.

De LogCat-weergave verzamelt en geeft deze informatie weer van de aangesloten emulator of het echte apparaat. In afb. Figuur 2.12 toont een voorbeeld van uitvoer uit een LogCat-weergave.

Rijst. 2.12. LogCat-weergave

Let op de knoppen in de rechterbovenhoek van LogCat.

Met de eerste vijf hiervan kunt u de logniveaus selecteren die u wilt zien.

Met de groene plusknop kunt u een filter definiëren op basis van tag, proces-ID en logniveau. Het zal u enorm helpen als u alleen het logbestand van uw applicatie wilt zien (die waarschijnlijk een speciale tag zal gebruiken).

Met de overige knoppen kunt u het filter bewerken en wijzigen, en het uitvoervenster wissen.

Als er meerdere apparaten/emulators tegelijkertijd zijn aangesloten, zal LogCat alleen informatie van één van hen uitvoeren. Voor meer gedetailleerde informatie kunt u het DDMS-perspectief gebruiken.

DDMS (Dalvik Debugging Monitor Server) biedt uitgebreidere informatie over Dalvik-processen en virtuele machines die op alle aangesloten apparaten draaien. Via het menu-item Venster – Open Perspectief – Overige – DDMS (Venster – Open perspectief – Overige – DDMS) kunt u op elk gewenst moment overschakelen naar het DDMS-perspectief. In afb. Figuur 2.13 laat zien hoe een DDMS-perspectief er doorgaans uitziet.

Rijst. 2.13. DDMS in actie

Net als bij andere perspectieven hebben we verschillende speciale visies die nuttig werk voor ons doen. In dit geval willen we informatie verzamelen over alle processen, hun virtuele machines, threads, huidige geheugenstatus, gegevens van LogCat voor een specifiek apparaat, enz. Laten we deze weergaven eens bekijken.

Apparaten – toont alle aangesloten apparaten en emulators, evenals de processen die erop draaien. Met behulp van de knoppen op de werkbalk kunt u verschillende acties uitvoeren: fouten in het geselecteerde proces opsporen, de geheugenstatus en gegevens uit threads vastleggen en schermafbeeldingen maken.

LogCat - Hetzelfde als beschreven in de vorige sectie, met één verschil: het geeft informatie weer van het apparaat dat is geselecteerd in de weergave Apparaten.

Emulatorcontrole – hiermee kunt u het gedrag van een actieve emulatorinstantie wijzigen. U kunt het bijvoorbeeld voorbeeld-GPS-coördinaten laten genereren om te testen.

Threads - Geeft informatie weer over de threads die worden gebruikt door het proces dat is geselecteerd in de weergave Apparaten. De informatie wordt alleen getoond als je streamtracking hebt ingeschakeld (dit kun je doen door op de vijfde knop van links in de weergave Apparaten te klikken).

Heap (niet getoond in Fig. 2.13) - geeft informatie over de status van het geheugen van het apparaat. Net als bij threadgegevens moet u geheugentracking expliciet inschakelen in de weergave Apparaten door op de tweede knop van links te klikken.

Allocation Tracker - Toont recent gebruikte klassen. Dit is zeer nuttig bij het bestrijden van geheugenlekken.

Bestandsverkenner – Hiermee kunt u bestanden wijzigen op een aangesloten Android-apparaat of emulatorinstantie. U kunt bestanden naar deze weergave slepen en neerzetten, net zoals u dat zou doen wanneer u met het besturingssysteem werkt.

DDMS is eigenlijk een aparte applicatie die in Eclipse is geïntegreerd met behulp van de ADT-plug-in. U kunt het ook afzonderlijk uitvoeren vanuit de map $ANDR0ID H0M E/ tools (%ANDROID HOME%/tools bij gebruik van Windows). Het maakt niet rechtstreeks verbinding met apparaten, maar gebruikt in plaats daarvan Android Debug Bridge (ADB), een ander hulpprogramma dat is opgenomen in de SDK. Laten we het beschouwen als een aanvulling op onze kennis over de Android-ontwikkelomgeving.

ADB gebruiken

Met ADB kunt u verbonden apparaten en emulatorinstanties beheren. Het bestaat uit drie verschillende componenten.

Een clienttoepassing die op de machine van de ontwikkelaar wordt gestart met behulp van de opdracht adb (deze opdracht werkt als u uw omgevingsvariabelen correct hebt geconfigureerd). Als we het over ADB hebben, bedoelen we precies dit opdrachtregelhulpprogramma.

De server, die ook op de computer van de ontwikkelaar draait. Het wordt geïnstalleerd als een achtergrondservice en is verantwoordelijk voor de verbinding tussen het ADB-programma en elk aangesloten apparaat of emulatorinstantie.

De ADB-daemon, die ook een achtergrondproces is en op elke telefoon of emulator draait. De ADB-server gebruikt deze daemon om verbinding te maken.

Meestal gebruiken we ADB via DDMS, waarbij we het bestaan ​​van een afzonderlijk opdrachtregelhulpprogramma negeren. Maar soms is het handig om het apart uit te voeren, dus laten we een paar functies eens bekijken.

OPMERKING

Voor een volledig overzicht van de beschikbare opdrachten raadpleegt u de ADB-documentatie op de Android Developers-website (http://developer.android.com).

Een zeer nuttige taak die wordt uitgevoerd met ADB is het verkrijgen van een lijst van alle apparaten en emulators die zijn verbonden met de ADB-server (en dus met de computer). Om dit te doen, voert u de volgende consoleopdracht uit (let op: het symbool maakt geen deel uit van de opdracht):

Als gevolg hiervan wordt een lijst met alle aangesloten apparaten en emulators met bijbehorende serienummers op het scherm weergegeven:

Het serienummer van het apparaat of de emulator wordt gebruikt om volgende opdrachten uit te voeren. Met de volgende opdracht wordt bijvoorbeeld het APK-bestand myapp geïnstalleerd. en rk van de machine van de ontwikkelaar naar een apparaat met serienummer NT019R803783:

Het argument -s kan worden gebruikt bij elke ADB-opdracht die een actie op een specifiek apparaat uitvoert.

Er zijn ook opdrachten voor het kopiëren van bestanden tussen de computer en het apparaat (emulator). Het resultaat van de volgende opdracht is het kopiëren van het lokale bestand myfi1e. txt naar de geheugenkaart van het apparaat met serienummer HT019Р803783:

Om een ​​omgekeerde kopie te maken van file1e. txt van de geheugenkaart, gebruikt u de volgende tekenset:

Als er momenteel slechts één apparaat of emulator met de ADB-server is verbonden, kunt u het serienummer weglaten - adb zal het automatisch detecteren.

Uiteraard zijn de mogelijkheden van ADB niet beperkt tot de functies die we hebben beschreven. Veel hiervan worden via DDMS geïmplementeerd en in de meeste gevallen zullen we de opdrachtregel niet gebruiken. Voor kleine taken is het echter een ideale oplossing.

Samenvatten

De Android-ontwikkelomgeving kan soms intimiderend zijn. Gelukkig heb je maar een deel van de functionaliteit nodig om aan de slag te gaan.

Het belangrijkste dat je na het studeren moet begrijpen, is hoe het allemaal in elkaar steekt. De JDK en Android SDK dienen als basis voor alle Android-ontwikkeling. Ze bieden tools voor het compileren, implementeren en uitvoeren van applicaties op emulatorinstanties en apparaten. Om het ontwikkelingsproces te versnellen gebruiken we Eclipse in combinatie met de ADT-plug-in, waardoor het ongemak van het werken met JDK en SDK op de opdrachtregel wordt geëlimineerd. Eclipse zelf is gebouwd op verschillende basisconcepten: werkruimten die projecten beheren; weergaven die speciale functionaliteit bieden (zoals codebewerking of LogCat-uitvoer); perspectieven, die weergaven combineren om specifieke taken uit te voeren (bijvoorbeeld foutopsporing); Configuraties uitvoeren en fouten opsporen, waarmee u opties kunt definiëren voor het uitvoeren of opsporen van fouten in uw toepassing.

Een voorwaarde om al deze rijkdom onder de knie te krijgen is oefenen, hoe saai het ook mag klinken. Terwijl we dit bestuderen, zullen we projecten implementeren die u kennis laten maken met de Android-ontwikkelomgeving. Maar daar moet het niet bij blijven. Het is aan jou om de volgende stappen te zetten.

Nu je al deze informatie hebt opgenomen, kun je verder gaan met waar je dit allemaal voor bent begonnen: game-ontwikkeling.

In veel instructies voor het verkrijgen van rootrechten en het wijzigen van firmware moet u USB-foutopsporing inschakelen. Wat USB-foutopsporing is, waarom het nodig is en hoe u het inschakelt, vindt u in dit artikel.

Waar wordt USB-foutopsporing voor gebruikt?

USB-foutopsporing wordt gebruikt om de service te gebruiken voor het debuggen van applicaties en apparaten op het Android-besturingssysteem (controleer hoe de applicatie en het systeem als geheel werken en welke fouten zijn opgetreden), wat wordt genoemd.

Wat is OEM-fabrieksontgrendeling?

Vanaf Android 5.0 begonnen veel fabrikanten een aanvullend beveiligingsmechanisme te implementeren tegen ongeoorloofde wijziging van systeempartities. Als gevolg hiervan werd de functie "OEM Factory Unlock" geïntroduceerd in het gedeelte "Developer Menu"; indien geactiveerd, kunt u herstel- en aangepaste firmware van derden flashen.

Verwar "OEM Factory Unlock" niet met Bootloader Unlocking, wat door veel fabrikanten vereist is - Xiaomi, HTC, Huawei, Google Pixel, Sony.

Android-ontwikkelaarsmenu

« USB debugging" En " Fabrieksontgrendeling OEM" bevinden zich allemaal in een verborgen sectie van de Android-instellingen, genaamd " Ontwikkelaarsmenu" Om dit gedeelte te kunnen zien, moet u een eenvoudige activeringsprocedure voltooien.

Hoe schakel ik USB-foutopsporing in?

Op absoluut alle Android-apparaten, ongeacht of het een smartphone of tablet is, is USB-foutopsporing aanwezig Menu -> Instellingen

Mogelijke locatiemogelijkheden

Ondanks het feit dat USB-foutopsporing in de instellingen zit, kunnen de locatie-opties in het menu verschillen en kunnen er verschillende opties zijn om deze te vinden! Laten we zes mogelijke opties bekijken.

Optie nr. 1 voor Android 4.2 - Android 7.1:

Menu -> Instellingen -> Over smartphone/Over tablet -> Buildnummer en klik er ongeveer 7 - 10 keer op, ga dan terug naar Instellingen -> Voor ontwikkelaars ->

Optie nr. 2.1 voor Xiaomi (nieuwe versies van MIUI)

Menu -> Instellingen -> Over de telefoon -> MIUI-versie en klik er ongeveer 7 - 10 keer op, ga dan terug naar Instellingen -> Geavanceerd -> Voor ontwikkelaars -> USB-foutopsporing - vink het vakje aan.

Optie nr. 2.2 voor Xiaomi (oude versies van MIUI)

Menu -> Instellingen -> Algemeen -> Over smartphone/Over tablet -> Buildnummer en klik er ongeveer 7 - 10 keer op, ga dan terug naar Instellingen -> Voor ontwikkelaars -> USB-foutopsporing - vink het vakje aan.

Optie nr. 3 voor Android 8.X en hoger:

Op Android 8.0 en nieuwer zijn de instellingen enigszins bijgewerkt. Om nu naar het ontwikkelaarsmenu te gaan en "USB-foutopsporing" in te schakelen, moet u: ga naar Systeem -> Over apparaat (tablet/telefoon) -> Klik 5-7 keer op "Buildnummer" en keer terug naar de sectie Systeem -> Ontwikkelaarsmenu.

Voor Android-versies 1.6 - 4.2

Optie #4:

Menu -> Instellingen -> Ontwikkeling ->

Optie #5:

Menu -> Instellingen -> Voor ontwikkelaars -> USB-foutopsporing - vink het vakje aan

Optie #6:

Menu -> Instellingen -> Applicaties -> Ontwikkeling -> USB-foutopsporing (Android 2.2 - 3.0)

Optie nr. 7:

Menu -> Instellingen -> Meer -> Opties voor ontwikkelaars -> USB-foutopsporing - vink het vakje aan

Optie nr. 8 voor Android 4.2 en hoger:

Menu -> Instellingen -> Systeem -> Over smartphone/Over tablet -> Buildnummer en klik er ongeveer 7 - 10 keer op, ga dan terug naar Instellingen -> Voor ontwikkelaars -> USB-foutopsporing - vink het vakje aan

Nadat u USB-foutopsporing hebt ingeschakeld, autoriseert u de computer! (Voor Android 4.2 en hoger)

De eerste keer dat u verbinding maakt met een computer en een opdracht invoert of rootrechten verkrijgt, wordt u gevraagd de computer te vertrouwen waarmee Android momenteel is verbonden! Dit verzoek verschijnt op elke nieuwe computer of laptop! Vink het vakje aan en klik op OK.

USB debugging is ingeschakeld.

USB-foutopsporing is ingeschakeld en uw Android-apparaat wordt niet gedetecteerd?

Het eerste dat je moet geloven is dit aanwezigheid van geïnstalleerde stuurprogramma's op uw computer of installeer/update ze opnieuw. Details over het installeren van stuurprogramma's, evenals links naar de nieuwste stuurprogramma's, vindt u in het artikel - hoe. Een ander probleem dat Android niet detecteert, is dat het zich in het systeem bevindt vergrendelde status - ontgrendelen uw smartphone of tablet! Gebruik de poort niet USB 3.0, alleen USB 2.0 .

Als u USB-foutopsporing nog steeds niet op uw computer kunt installeren, probeer dan de verbindingsmethode met de pc te wijzigen. Wanneer u uw smartphone of tablet al met uw pc heeft verbonden, trekt u de bovenste informatiebalk “gordijn” naar beneden -> selecteer USB-verbinding En activeer de PTP-modus.

In dit artikel wordt uitgelegd hoe u een debugger aan een Android-applicatie kunt koppelen en hoe u de methoden kunt doorlopen die worden aangeroepen met behulp van de informatie die is verkregen na het decompileren van de applicatie.

In dit artikel wordt uitgelegd hoe u een debugger aan een Android-applicatie kunt koppelen en hoe u de methoden kunt doorlopen die worden aangeroepen met behulp van de informatie die is verkregen na het decompileren van de applicatie. Het goede nieuws is dat voor foutopsporing geen superuser-rechten vereist zijn. De beschreven technieken kunnen erg handig zijn tijdens pentests van mobiele applicaties, omdat we de code kunnen ‘penetreren’ terwijl het programma draait, en informatie kunnen verkrijgen en vastleggen waartoe we normaal gesproken geen toegang hebben. U kunt bijvoorbeeld verkeer onderscheppen vóór de versleuteling en direct sleutels, wachtwoorden en andere waardevolle informatie verkrijgen. Het artikel zal nuttig zijn voor pentesters en ontwikkelaars van mobiele applicaties die meer diepgaande kennis willen opdoen over mogelijke aanvallen op het Android-platform.

Eisen aan de testomgeving:

  • Besturingssysteem: Windows/Mac OS X/Linux
  • Java (versie 1.7 aanbevolen)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Android-apparaat/emulator

In dit artikel wordt de volgende configuratie gebruikt: Windows 8, Android Studio en IntelliJ IDEE. Toestel: Nexus 4 met Android-versie 4.4.4. Ik raad aan om alle hulpprogramma's toe te voegen omgevingsvariabele PATH om deze tools gemakkelijker en sneller toegankelijk te maken.

Het Android-applicatiepakket (APK) dat in dit artikel wordt gebruikt, kan hier worden gedownload: com.netspi.egruber.test.apk .

Apparaat set up

Met de onderstaande instructies kunt u het apparaat voorbereiden op experimenten.

Het gedeelte Ontwikkelaaropties activeren

Om te beginnen moet USB-foutopsporing zijn ingeschakeld op uw Android-apparaat (USB-foutopsporingsoptie), waardoor u met het apparaat kunt ‘communiceren’ met behulp van tools van Android-bellen SDK. Hiervoor moet u echter het gedeelte Ontwikkelaarsopties activeren. Ga op uw apparaat naar het gedeelte Instellingen > Over de telefoon en klik meerdere keren op het item Build-nummer, waarna een bericht zou moeten verschijnen waarin staat dat het gedeelte Ontwikkelaarsopties is geactiveerd.

Figuur 1: Om het gedeelte Ontwikkelaarsopties te activeren, moet u meerdere keren op Build-nummer klikken

Schakel USB foutosporing aan

Om foutopsporing via de USB-poort in te schakelen, gaat u naar Instellingen > Opties voor ontwikkelaars en vinkt u het vakje naast USB-foutopsporing aan.

Figuur 2: De USB-foutopsporingsoptie inschakelen

Het apparaat aansluiten en ADB starten

Nadat u het apparaat via een USB-poort op de computer hebt aangesloten, zou het bericht “USB-foutopsporing aangesloten op het apparaat” moeten verschijnen. Controleer ook of u verbinding kunt maken met uw apparaat via de Android Debug Bridge-app (ADB) die bij de app is geleverd Android-SDK(Android SDK Platform-toolspakket). Voer bij de opdrachtprompt de volgende opdracht in:

Het apparaat zou in de lijst moeten verschijnen.

Figuur 3: Lijst met aangesloten apparaten

Als het apparaat niet in de lijst verschijnt, is de meest waarschijnlijke reden onjuist geïnstalleerde stuurprogramma's(op Windows). Afhankelijk van het apparaat is het stuurprogramma te vinden in de Android SDK of op de website van de fabrikant.

De applicatie controleren op foutopsporing

Voordat u Android-applicaties kunt debuggen, moet u eerst controleren of dit mogelijk is. De controle kan op verschillende manieren worden uitgevoerd.

De eerste manier is rennen Android-apparaat Monitor, opgenomen in de Android SDK (in de map Tools). IN Windows-bestand genaamd monitor.bat. Bij Android openen Apparaatmonitor Het apparaat verschijnt in het gedeelte Apparaten.

Figuur 4: Android-applicatie Apparaatmonitor

Als fouten in een applicatie op het apparaat kunnen worden opgespoord, zal die applicatie ook in de lijst verschijnen. Ik heb een testprogramma gemaakt, maar de lijst is leeg omdat er geen fouten in het programma kunnen worden opgespoord.

De tweede manier om te controleren of er fouten in een applicatie kunnen worden opgespoord, is door het bestand AndroidManifest.xml uit het applicatiepakket (APK, Android-applicatiepakket) te onderzoeken. De APK is een zip-archief met alle informatie die nodig is om de applicatie op uw Android-apparaat uit te voeren.

Wanneer een applicatie wordt gedownload van Google Speel Winkel, wordt het applicatiepakket ook gedownload. Alle gedownloade APK-bestanden worden doorgaans op het apparaat opgeslagen in de map /data/app. Als u geen superuser-rechten heeft, kunt u geen bestanden uit de map /data/app weergeven. Hoewel, als u de naam van het APK-bestand kent, u dit met het hulpprogramma kunt kopiëren bijvoeglijk naamwoord. Om de naam van het APK-bestand te achterhalen, voert u de volgende opdracht in:

zal verschijnen opdrachtregel apparaten. Voer vervolgens het volgende commando in:

pm lijstpakketten -f

Er wordt een lijst met alle pakketten op het apparaat weergegeven.

Figuur 5: Lijst met pakketten op het apparaat

Als we naar de lijst kijken, vinden we een testtoepassing.

Figuur 6: Aangemaakt testapplicatiepakket (wit gemarkeerd)

Nu moet u het pakketbestand kopiëren. Open de shell en voer het volgende commando in:

adb pull /data/app/[.apk-bestand]

Figuur 7: Het APK-bestand kopiëren van het apparaat naar het systeem

Nu moet u het pakketbestand openen en de inhoud van AndroidManifest.xml bekijken. Helaas kunnen we het archief niet zomaar uitpakken, omdat het APK-bestand in binair formaat is gecodeerd. Het hulpprogramma dat het meest wordt gebruikt voor het decoderen is apktool ook al gebruik ik APK-studio, aangezien deze applicatie een gebruiksvriendelijke grafische interface heeft. De rest van het artikel gaat over APK Studio.

Klik in APK Studio op het kleine groene pictogram, geef het project een naam en geef het pad op APK-bestand. Geef vervolgens let op om het project op te slaan.

Figuur 8: Een nieuw project maken in APK Studio

Nadat u de APK hebt geopend, selecteert u het bestand AndroidManifest.xml en bekijkt u de tag-instellingen van de applicatie. Als de vlag android:debuggable ontbreekt (of aanwezig is maar is ingesteld waarde vals), wat betekent dat er geen fouten in de toepassing kunnen worden opgespoord.

Figuur 9: Inhoud van het AndroidManifest.xml-bestand

Het AndroidManifest.xml-bestand wijzigen

Met behulp van het hulpprogramma apktool of APK Studio kunnen we de bestanden wijzigen en de inhoud terug in het pakket verpakken. We zullen nu het AndroidManifest.xml-bestand aanpassen zodat de applicatie kan worden opgespoord. Voeg de regel android:debuggable="true" toe in de applicatietag.

Figuur 10: De inhoud van de applicatietag wijzigen

Nadat u de vlag heeft toegevoegd, klikt u op het “hamer”-pictogram en zet u het pakket weer in elkaar. Het opnieuw opgebouwde pakket bevindt zich in de map build/apk.

Figuur 11: Het opnieuw opbouwen van het pakket is met succes voltooid

Na het opnieuw opbouwen wordt het pakket ondertekend en kan het opnieuw op het apparaat worden geïnstalleerd (alle Android-applicaties moeten worden ondertekend). De meeste toepassingen verifiëren het certificaat dat wordt gebruikt om te ondertekenen niet. Anders moet u de code wijzigen die deze controle uitvoert.

Nu moet u het opnieuw opgebouwde pakket installeren. Verwijder eerst de oude applicatie met behulp van de volgende opdracht:

adb pm verwijderen

Installeer vervolgens het nieuwe pakket:

adb install [.apk-bestand]

U kunt het pakket ook met één opdracht verwijderen en installeren:

adb install -r [.apk-bestand]

Figuur 12: Het opnieuw opgebouwde pakket installeren

Controleer of de opnieuw geïnstalleerde applicatie correct op het apparaat wordt gestart. Als alles werkt, ga dan terug naar Android Device Monitor, waar de testapplicatie zou moeten verschijnen.

Figuur 13: Er kunnen nu fouten worden opgespoord in de opnieuw opgebouwde applicatie

Inrichten van de ontwikkelomgeving (IDE)

Nu kunt u een debugger aan de opnieuw opgebouwde applicatie koppelen, maar eerst moet u een project maken in de ontwikkelomgeving (het artikel gebruikt IntelliJ IDEA). Laten we een nieuw project maken. Voer in het veld Applicatienaam een ​​aangepaste naam in. Geef in het veld Pakketnaam een ​​naam op die exact overeenkomt met de maphiërarchie van het opnieuw opgebouwde pakket.

Figuur 14: Een nieuw project maken in IntelliJ IDEA

Normaal gesproken komt de APK-bestandsnaam overeen met de mapstructuur, maar als u het niet zeker weet, controleer dan de maphiërarchie in APK Studio tot aan de map waarin de toepassingsbestanden zich bevinden. In mijn geval zijn de naam en de mapstructuur precies hetzelfde (com.netspi.egruber.test).

Afbeelding 15: Directory-hiërarchie van toepassingen testen

Haal het vinkje weg bij "Creëer Hello World-activiteit" en voltooi het maken van het project (alle andere opties blijven standaard). Het nieuwe project zou er ongeveer zo uit moeten zien:

Figuur 16: Hiërarchie van mappen en bestanden van het nieuwe project

Nadat u het project heeft gemaakt, moet u toevoegen bron uit het APK-bestand zodat de debugger de namen van symbolen, methoden, variabelen, enz. “kent”. Goed nieuws het feit dat Android-applicaties vrijwel zonder kwaliteitsverlies kunnen worden gedecompileerd (de broncode zal hetzelfde zijn als het origineel). Na decompilatie wordt de broncode geïmporteerd in de ontwikkelomgeving (IDE).

Bronnen ophalen uit een applicatiepakket

Eerst moet u de APK naar een jar-bestand converteren. Vervolgens verkrijgen we met behulp van een Java-decompiler de broncode van de applicatie. We zullen de conversie naar jar uitvoeren met behulp van het hulpprogramma dex2jar. dex2jar heeft een d2j-dex2jar.bat-bestand dat wordt gebruikt om APK naar jar te converteren. De syntaxis van de opdracht is vrij eenvoudig:

d2j-dex2jar.bat [.apk-bestand]

Figuur 17: APK naar jar converteren

Open of sleep vervolgens het resulterende bestand naar de JD-GUI (dit is een Java-decompiler).

Afbeelding 18: Jar-bestandsstructuur

Het jar-bestand moet verschijnen als een hiërarchische structuur met Java-bestanden met leesbare broncode. Ga naar Bestand> Alle bronnen opslaan om alles in te pakken bronteksten in een zip-archief.

Figuur 19: De bronteksten van het gedecompileerde bestand opslaan

Nadat u de bronteksten hebt opgeslagen, pakt u het archief uit in een aparte map.

Figuur 20: Uitgepakt archief

Nu moet u beide mappen importeren in het eerder gemaakte project in de IDE. Ga in IntelliJ naar de map src en kopieer daar de inhoud van het uitgepakte archief (twee mappen).

Figuur 21: Beide mappen worden gekopieerd naar de src-map

Terugkerend naar Intellij zien we het bijgewerkte project.

Figuur 22: Bronteksten verschenen in het project

Als we op een element uit de lijst klikken, zien we de brontekst. Zoals u kunt zien in de onderstaande schermafbeelding (de brontekst van de klasse LoginActivity), wordt de broncode versluierd met behulp van ProGuard.

Afbeelding 23: Verduisterde brontekst van de klasse LoginActivity

Een debugger aansluiten

Nu het project de broncode heeft, kunnen we beginnen met het instellen van breekpunten voor methoden en variabelen. Wanneer breekpunten worden bereikt, stopt de toepassing. Als voorbeeld heb ik een breekpunt ingesteld op een methode (rechts in de versluierde code) die verantwoordelijk is voor het verwerken van informatie die in een tekstveld wordt ingevoerd.

Afbeelding 24: Er is een breekpunt ingesteld op een versluierde methode.

Zodra er een breekpunt verschijnt, verbindt u de debugger met het proces op het apparaat door op het schermpictogram rechts te klikken bovenste hoek(het pictogram kan op uw IDE anders zijn).

Figuur 25: De debugger verbinden met het proces

Afbeelding 26: Lijst met processen voor het verbinden van een debugger

Nadat u het proces hebt geselecteerd, maakt de debugger verbinding met het apparaat.

Afbeelding 27: Debugger gekoppeld aan een proces dat op het apparaat wordt uitgevoerd

Ik zal het getal 42 in het tekstveld invoeren (als je het je herinnert, is er een breekpunt voor de overeenkomstige methode).

Figuur 28: Voer het getal 42 in het tekstveld in

Nadat u op de knop Code invoeren hebt gedrukt, wordt de toepassing afgebroken op het breekpunt omdat de debugger weet welke methode op het apparaat wordt aangeroepen. De gecompileerde Android-applicatie bevat foutopsporingsinformatie(zoals namen van variabelen) toegankelijk via elke Java Debug Wire Protocol (JDWP)-compatibele debugger. Als foutopsporing is ingeschakeld voor uw toepassing, kan een JDWP-compatibele debugger (de meeste debuggers die bij Java-ontwikkelomgevingen worden geleverd, in deze categorie vallen) verbinding maken met virtuele machine Android-applicaties en lees en voer vervolgens foutopsporingsopdrachten uit.

Figuur 29: Breekpunthit

De onderstaande schermafbeelding toont het nummer dat we eerder in het tekstveld hebben ingevoerd.

Afbeelding 30: Lijst met variabelen van de huidige klasse-instantie

Conclusie

We kunnen niet alleen gegevens in de applicatie lezen, maar ook onze eigen gegevens invoegen. Dit kan handig zijn als we bijvoorbeeld de stroom van code-uitvoering willen onderbreken en sommige delen van het algoritme willen omzeilen. Met behulp van een debugger kunnen we de logica van de applicatie beter begrijpen en analyseren wat niet toegankelijk is voor de gemiddelde gebruiker. Het bekijken van de gebruikte encryptiefuncties en dynamische sleutels kan bijvoorbeeld erg handig zijn. Bovendien kan het bij het debuggen soms nuttig zijn om te weten hoe functies omgaan met het bestandssysteem of de database om te begrijpen welke informatie door de toepassing wordt opgeslagen. Soortgelijke manipulaties zijn beschikbaar op elk Android-apparaat zonder superuser-rechten.