Also gut.
Im letzten Abschnitt haben wir das Android-Framework installiert, und
jetzt werden wir endlich den Call Graph verwenden.
Wir erstellen unser erstes Anrufdiagramm für eine Aufgabe, die ich für Sie vorbereitet habe.
Also, bist du
bereit? Los geht's.
In diesem Abschnitt habe ich eine Reverse-Me-Anwendung beigefügt, die
eher eine Demo-Anwendung als eine Capture Deflect ist.
Aber ja, wir verwenden dies, um diese Funktion des Anrufdiagramms zu veranschaulichen.
Bitte laden Sie diese Datei herunter, und dann werden wir sie installieren und sehen, wie sie aussieht.
Ich habe sie bereits heruntergeladen und füge sie per Copy-Paste in das Verzeichnis
unserer Anwendung ein, denn wir wollen unser System in einem sauberen Zustand haben.
Wir nennen das Reverse Me Challenge.
Dann eröffne ich ein neues Terminal.
Ich stelle eine ADB-Verbindung zu allen Zeitmaschinen her, und ich werde dies installieren.
Und das ist ein schöner Pfeil, den wir jetzt bekommen.
In diesem Spickzettel habe ich auch viele ADB-Pfeile aufgeführt, mit denen ich in
den letzten sieben Jahren konfrontiert war, und auch die Lösung für diese Pfeile.
Ich habe eine Debug-Version davon erstellt und wir können sehen, dass dies eine reine Testinstallation ist und wir
können ADB install oder die Hilfe von ADB install verwenden, um herauszufinden, wie wir dieses Problem lösen können.
Wir verwenden also die ADB-Installations-Shell oder ich vermute, es ist nur die ADB-Shell.
Im Rahmen des Installationsprozesses können wir sehen, dass dieser Parameter die Installation von
Testpaketen erlaubt, und wenn wir diesen Parameter angeben, können wir diese Anwendung installieren.
Wir führen also ADB aus, installieren dash tx reverse me apk und können dann den Erfolg sehen.
Es klappt.
Lassen Sie uns diesen Bildschirminhalt hierher bringen, damit wir nicht zwischen den beiden wechseln müssen.
Ich streiche dies nach oben und schon haben wir unsere umgekehrte MI-Anwendung.
Ich werde das hier öffnen und wir können es sehen.
Ja, es sieht nicht so schön aus, weil es eher eine Demo-Anwendung ist.
Die anderen Aufgaben sind optisch schöner, aber ziemlich einfach.
Wir müssen ein Kennwort eingeben und auf die Schaltfläche drücken, und dann können wir sehen, dass das Kennwort nicht korrekt war.
Versuchen wir es also.
Lassen Sie mich rein.
Funktioniert auch nicht.
Lassen Sie mich rein, bitte.
Ich habe "bitte" gesagt.
Ja.
Wir haben gesehen, dass wir diese Herausforderung nicht auf diese Weise lösen werden.
Werfen wir also einen Blick in den Quellcode.
Wir schließen diese und nutzen den Ausschluss.
Ja.
Wie wir sehen können, wird sie hier geladen, und jetzt haben wir diese Anwendung.
Als Erstes schaue ich mir das Beispiel des Manifests hier an.
Lassen Sie mich das ein bisschen größer machen.
Also gut.
Hier haben wir das Android Manifest XML, und wir
können sehen, dass diese Anwendung keine bestimmten Berechtigungen benötigt.
Wir haben auch nur eine Aktivität, diese Hauptaktivität, und das ist unser Startprogramm.
Wir haben also keine zusätzlichen Aktivitäten.
Und das ist ziemlich einfach und sauber.
Werfen wir also einen Blick auf die Haupttätigkeit, die zur Verfügung steht und die auf uns zukommt.
Hacking ist die Haupttätigkeit.
Ja.
Hier sind wir nun bei der Haupttätigkeit.
Und wenn Sie mit der Android-Entwicklung nicht vertraut sind, ist das überhaupt kein Problem.
Ich begleite Sie dabei.
Sie müssen kein Android-Entwickler sein, um diesen Kurs zu absolvieren, aber
es ist hilfreich, wenn Sie die Struktur des Kurses verstehen.
Wir haben diese Schaltfläche gesehen, und wenn wir diese Schaltfläche drücken, wird unser Eingabetext, der
Text, den wir in diese Anwendung eingefügt haben, überprüft, und dieser ist hier drüben.
Woher wissen wir, dass dies jetzt die Schaltfläche ist? Nun,
wir müssen einen Blick in das Android-Layout dieser Schaltfläche werfen.
Für diese Aktivität gibt es also eine Layout-Datei.
Und diese Layout-Datei beschreibt, wie diese Schaltflächen organisiert sind, wo der Eingabetext
ist und all diese Dinge, die wir in den Ressourcen finden können.
Wir gehen also in das Ressourcen-Layout und haben dann dieses Aktivitäts-Hauptlayout hier drüben.
Ich werde dies in einen neuen Code-Editor kopieren, weil es hier nicht einfach zu lesen ist.
Also erstellen wir eine neue, fügen diese ein und schalten auch das Wort Rap um.
Okay, jetzt haben wir die einzelnen Elemente hier drüben.
Lassen Sie mich.
Geben Sie sie aus.
Wir haben einen Bearbeitungstext, der unser Textfeld ist.
Wir werden unser Fahnengas einführen.
Dann haben wir diese Schaltfläche.
Das ist offensichtlich die Funktion dieser Schaltfläche.
Wir haben eine Textansicht.
Möglicherweise wird dieser Text oder eine falsche Flagge angezeigt.
Und wir haben eine Bildansicht, die das Schloss dieses Symbols ist.
Wenn Sie auf die Schaltfläche hier drüben gehen, können wir sehen, dass
diese Schaltfläche ein On-Click-Attribut hat und diese hat diesen Methodennamen hier drüben.
Jetzt wissen wir also, dass beim Drücken dieser Schaltfläche diese Prüfmethode aufgerufen wird, und wenn Sie zurück in die
Hauptaktivität gehen, können wir sehen, dass dies die Methode ist, die aufgerufen wird, wenn wir die Schaltfläche drücken, und
diese Methode nimmt jetzt unseren Eingabetext und übergibt ihn an diese Funktion hier drüben in dieser Klassenfunktion eins.
Gehen Sie weiter.
Schauen wir uns eine an.
Hier sind wir nun bei eins und eins weiter.
Schneidet eine Zeichenkette als Parameter ein und prüft, ob die Zeichenkette in Ordnung ist.
Das ist der erste Spoiler.
Aber ich werde nicht näher darauf eingehen, wenn Sie das Problem
hinterher lösen wollen, aber es geht um den Zweck einer Demo.
Es handelt sich also nicht um eine echte Herausforderung.
Aber gut, wenn dieser Text ein Werden enthält, dann gehen wir in weiter.
Um weiterzukommen, haben wir eine weitere Methode, und dann gehen wir in die dritte über, machen weiter und so weiter.
Innerhalb einer Bewegung weiter.
Wir haben auch unsere Flagge hier drüben, damit wir sehen können, dass dies die
Flaggen-Methode ist, und diese Flaggen-Methode wird nun irgendwo in all diesen Funktionen aufgerufen werden.
Es wird hier nicht angerufen werden.
Eine Funktion hier drüben referenziert also auf diese Methode.
Und das ist der wichtigste Teil.
Wenn Sie diese Aufgabe lösen wollen, welche Funktion verweist auf
diese und wie können wir zu diesem Punkt gelangen? Und
deshalb, Sie haben es erraten, verwenden wir dieses Aufrufdiagramm.
Also gut.
Ich schließe also dieses Kapitel.
Die Quoten werden diesen Fall abschließen, auch diesen Fall abräumen.
Und nun erstellen wir endlich unser erstes Anrufdiagramm.
Also benutzen wir Andrew Card.
Das sollte helfen.
Hier haben wir das Anrufdiagramm, diesen Schlüsselparameter.
Wir sagen also, Andrew hat ZG Strich Strich gehalten und jetzt haben wir die Optionen.
Die Erstellung eines Diagramms ist sehr einfach, so dass wir es nur noch ausführen müssen.
Andrew hat ein Anrufdiagramm erhalten, und dann verwenden wir die Option out hier, um diese Ausgabedatei zu erstellen.
Und diese Ausgabedatei hat diese HTML-Erweiterung, und wir verwenden ein Tool namens Giphy oder
ich bin mir nicht sicher, wie man es ausspricht, ich zeige Ihnen den Installationsprozess,
also machen Sie sich keine Gedanken darüber, um dieses Anrufdiagramm anschließend zu visualisieren.
Und das ist alles, was wir tun müssen.
Wir können auch nach bestimmten Klassenmethoden, Methodennamen filtern, wenn es sich um eine große Anwendung handelt und
wir nur an einer interessiert sind, aber ich zeige Ihnen, wie das für eine Anwendung wie
diese aussieht, denn ja, dann sehen Sie auch, wie Sie später mit größeren Dateien umgehen können.
Lassen Sie uns also dieses Anrufdiagramm erstellen.
Wir rufen die Andrew-Karte graph und dann die Dash-Option auf und nennen diese Datei graph dot HTML.
Ich vermute, dies wäre auch der Standardname und der letzte Parameter ist die APK reverse me apk.
Ja.
Andrew, Gott wird dieses Anrufdiagramm in diesem Dateiformat erstellen,
und hier bekommen wir nun unseren ersten Pfeil.
Ist das nicht schön? Das
ist es auf jeden Fall.
Aber wir können das leicht beheben.
Der Grund für diesen Fehler ist, dass die
Call-Graph-Funktion auf eine ältere Netzwerkbibliothek und Netzwerkbibliothek zurückgreift.
Und Andrew God kommt mit Netzwerk 2.2, so dass wir dies innerhalb der Anforderungen des GitHub-Repository finden können.
Ich werde Ihnen das schnell zeigen.
Andrew hat GitHub.
Hier haben wir die Anforderungen und hier können wir sehen und betrachten diesen Paketnamen in Stern 2.2.
Um das Codegraphen-Menü verwenden zu können, müssen wir diese Bibliotheksversion auf 1.11 herabstufen.
Ich bin mir nicht sicher, warum dies bei diesem Programm nicht standardmäßig der Fall ist.
Vielleicht ist es in der Backing-Ausgabe.
Ich weiß es nicht.
Wir können das in Ordnung bringen.
Und ja, auch das ist ziemlich einfach.
Nur ein Befehl.
Deshalb führen wir diesen Befehl pip drei, install network x aus und können dann
mit zwei gleich die genaue Version angeben, die wir für diese Bibliothek installieren wollen.
Und in unserem Fall ist es 1,11.
Und jetzt deinstalliert Pip die vorhandene Version und installiert
auch die ältere Version, die wir hier sehen können.
Lassen Sie uns nun versuchen, diesen Befehl noch einmal auszuführen.
Und wir können sehen.
Ja, es funktioniert endlich.
Also gut, schön.
Jetzt haben wir diese Datei namens Graph HTML.
Schauen wir uns das mal an.
Hier haben wir nun die Grafik HTML.
Und ich möchte Ihnen einige Informationen über uns geben, da Sie dies nicht lesen können.
Natürlich haben wir hier noch nicht über den Smiley-Teil gesprochen.
Ich möchte Ihnen nur einige Hinweise geben, wie Sie dies tun können, ohne Smiley zu verstehen.
Das erste, dieses große L, ist immer der erste Buchstabe hier drüben.
Und dies ist eine Typdefinition in Smiley.
Das bedeutet, dass es danach eine Klasse geben wird, und hier sehen
wir zum Beispiel die Android Support V4 App IE Notification Section.
Dies ist also der Name der Klasse, auf die verwiesen werden soll.
Keine Sorge, Sie müssen das nicht verstehen.
Der wichtigste Teil in Bezug auf das Anrufdiagramm ist dieser Teil.
Dann hier drüben.
Nach dem Klassennamen kommt dieser Pfeil.
Und jetzt haben wir diesen Funktionsnamen.
Nach diesem Pfeil folgt also immer dieser Funktionsname hier drüben.
Und wir können später unsere Funktionscodes an diesem Namen nach diesem Pfeil navigieren oder erkennen.
Wir müssen nicht verstehen, was hier oder vielleicht davor ist.
Wir konzentrieren uns also auf diesen Pfeil und dann auf den Namen hinter "Was
ist", denn das ist der Name der Methode, die dort aufgerufen werden soll.
Also gut.
Um diese Datei anzuzeigen, müssen wir das Tool installieren.
Und das wird auch in der Android-Dokumentation erwähnt.
Android hat also ein Anrufdiagramm.
Und hier können wir sehen, dass wir zur Visualisierung dieses Anrufdiagramms das cefi-Tool hier verwenden.
Also laden wir diese herunter und laden sie für Linux herunter, und jetzt wird sie heruntergeladen.
Warum dies ein Download ist.
Ich möchte Ihnen hier ein paar schöne Bilder zeigen.
Hier sehen wir also einen Graphen einer Anwendung und alles, was ein Punkt ist,
ist ein Funktionsname und man könnte denken, na ja, ist das einfacher zu handhaben?
Und ich kann Ihnen sagen, ja, denn hier sind jetzt alle Funktionen enthalten.
Aber wir konzentrieren uns nur auf eine bestimmte Funktion und werden sie hier herausfiltern.
Also gut.
Ich schließe dieses Kapitel.
Und jetzt werden wir laufen oder stattdessen Gaffey.
Kopieren Sie uns und gehen Sie in das Verzeichnis tools.
Giphy.
Ich bin mir auch nicht sicher über die richtige Aussprache.
Es ist wahrscheinlich, dass diese Aussage falsch ist, aber ich bleibe dabei.
Auszug hier.
Und ja, ich hasse es, wenn so etwas passiert.
Das werde ich also tun.
Kopieren Sie das hier eingefügte und löschen Sie dann das hier.
Okay, jetzt haben wir also dieses alberne Verzeichnis und hier haben
wir den Spin und wir können direkt als einer starten.
Wenn Sie ein Windows-System verwenden, haben Sie hier auch eine ausführbare Windows-Datei.
Starten wir dieses Werkzeug.
Es lädt und ist schön.
Wir bekommen unseren zweiten Pfeil.
Großartig.
Diesmal geht es um die Chopper-Version.
Jeff verlässt sich also auf eine ältere Reiseversion.
In meinem Fall verwende ich Java 11, aber Jeffrey funktioniert nur mit Java 8.
Deshalb müssen wir jetzt Java acht installieren.
Das Schöne an der Handhabung von Java auf einem Linux-System ist, dass Sie
mehrere Instanzen haben und leicht zwischen ihnen wechseln können, aber Sie müssen darauf
achten, dass die anderen Tools auch auf die neue aktualisierte Version angewiesen sind.
So funktioniert zum Beispiel Java 8 möglicherweise nicht.
Daher müssen Sie dies herausfinden und dann wieder auf einen bestimmten Typ umsteigen.
Also gut.
Versuchen wir es stattdessen mit einer Acht.
Deshalb führen wir sudo update innerhalb von
open shade key JDK sorry eight aus.
Und dann die Farbton-Taste.
Ich werde wiederkommen, wenn der Installationsvorgang abgeschlossen
ist, denn das kann einige Jahre dauern.
Ja.
Nun, wir haben auch Reisebüros, die uns herausfinden lassen, was der Fall ist.
Wir verwenden Java Dash Dash Version.
Und wie wir sehen, verwenden wir gerade Java 11, um zu Java 8 zurückzukehren.
Wir müssen diese alternativen Konfigurationen aktualisieren und können dies
mit sudo update alternatives dash dash config tun.
Und dann stellen wir Java zur Verfügung, und hier sehen wir, dass wir Java 11 verwenden, aber wir
können jetzt zu Java 8 wechseln, weil wir gerade jetzt installiert haben, ich gebe die Nummer zwei ein.
Wir sehen das an der Auswahl hier drüben, und jetzt verwenden wir Java acht, das ist alles.
Das ist doch ganz einfach,
oder? Lasst uns das herausfinden.
Wir können sehen, dass diese Java-Acht einen anderen Versionsparameter hat, was super lächerlich ist, aber okay.
Und jetzt können wir sehen, ja, wir verwenden Version acht.
Wir müssen das auch für den Java-Compiler machen und deshalb gehe ich zurück zum Befehl und
mache das einfach noch einmal für Java C und stelle hier auch das Auswahlwerkzeug zur Verfügung.
Und jetzt haben wir auch diese Java C-Instanz auf Java 8 aktualisiert.
Und so auch hier.
Ja, okay.
Versuchen wir nun, Giphy noch einmal zu starten.
Und wir können sehen.
Ja, der Kaffee funktioniert jetzt.
Großartig.
Bitte beachten Sie, dass Sie Ihre Java-Instanz vorerst
umgestellt haben und dies andere Tools beeinträchtigen könnte.
Wenn Sie also Giphy verwenden, sollten Sie wieder zu Java 11 wechseln.
Ja.
Aber vorerst bleiben wir bei diesem.
Lassen Sie uns diese Datei öffnen.
Also offene grafische oder ja.
Verwendet hier.
Wir fahren fort mit EPS.
Umkehrung der Herausforderung.
Rufen Sie das Diagramm auf, wählen Sie diese Datei aus und klicken Sie dann auf die Schaltfläche OK.
Ich werde das nachher ganz schnell maximieren.
Jetzt können wir sehen, dass wir 28.000 Knoten und 58.000 Kanten haben.
Es handelt sich also um Funktionen, und ja, es ist lächerlich, sie anzuzeigen.
Mal sehen, wie gut das sein kann.
Wir können sehen, wie er langsam geladen wird, aber jetzt ist er fertig.
Sehr schön.
Wir haben also diesen großen Blob hier drüben, und alles wird als ein einziger Funktionsaufruf beginnen.
Wir können nun verschiedene Layouts anwenden, um dies etwas besser zu handhaben, und wir können sie hier finden.
Wenn wir also ein anderes Layout wählen, z. B. dieses hier, und auf Ausführen klicken,
versucht Jeffy, dies auf die Ansicht zu erweitern, die wir in der Dokumentation gesehen haben.
Aber ich werde damit aufhören, denn auch wenn Giphy in der Lage ist, all
diese Informationen anzuzeigen, sind wir nicht in der Lage, sie einfach zu verarbeiten.
Filtern wir also nur die Informationen heraus, an denen wir interessiert sind.
Um dies zu filtern, gehen wir in das Datenlabor hier drüben.
In der Beschriftung sehen wir die Klassennamen und unterhalb des Pfeils den Funktionsnamen.
Wir sind nicht daran interessiert, die Android-Unterstützung vor und andere Pakete.
Wir sind nur an unserem Paket interessiert.
Deshalb verwenden wir diesen Filter, klicken auf das Etikett und erstellen es.
Com Punkt app Überprüfung Punkt umgekehrt bedeuten.
Da es sich um einen regulären Ausdruck handelt, müssen wir die Schrägstriche hier nicht angeben.
Und das sind nun alle Funktionskarten innerhalb unserer Anwendung.
Das sieht doch viel sauberer aus,
oder? Okay, lasst sie uns extrahieren.
Ich klicke mit der linken Maustaste auf eine und wähle diese aus.
Ich drücke die Steuerungstaste A, um alle auszuwählen.
Und dann klicke ich auf die rechte Maustaste.
Und dann sagen wir, mal sehen, verschieben in einen neuen Arbeitsbereich.
So kann ich sie am einfachsten aus den anderen
Versionen hier drüben oder den anderen Funktionsaufrufen extrahieren.
Wir haben nun einen neuen Arbeitsbereich erstellt, so dass wir den Arbeitsbereich schließen können.
Erstens, die alten.
Ja.
Und wenn wir nun zurück zur Übersicht gehen.
Sehr schön.
Das sieht viel besser aus als der bisherige Ansatz.
Wir haben also diese Kanten und Funktionsknoten nur auf unseren
Paketnamen beschränkt, was viel sauberer ist als der vorherige Ansatz.
Ja.
Lassen Sie uns also herausfinden, wie wir diese Informationen anzeigen können.
Wenn wir also über einen blättern, können wir sehen.
Ja, nur der einzelne Funktionspunkt wird hervorgehoben.
Wenn Sie den Verweis auf diese Seite erhalten möchten, können Sie dies durch Klicken auf diese Schaltfläche hier aktivieren.
Jetzt können wir diese Linien sehen, und wenn wir unsere eine haben,
können wir sehen, okay, diese ruft diese drei auf oder umgekehrt.
Wir werden später herausfinden, wie man das lesen kann.
Ich werde auch diese Funktion aktivieren, denn wenn wir
später eine Farbe hervorheben, werden auch diese Funktionspunkte hervorgehoben.
Auch in diesen Zeilen gibt es einzelne Punkte, auf die hier nicht verwiesen werden soll.
Was ist das für eine Funktion, die hier aufgerufen wird, aber nicht aufgerufen zu
werden scheint? Wir können die Beschriftung dafür mit der Text-Schaltfläche hier drüben aktivieren.
Und jetzt ist das nicht
mehr sauber geworden, oder? Ja.
Aber wir können diese Bezeichnung anpassen.
Wenn wir sie also hier erweitern, gelangen wir zu den Beschriftungen
und können die Schriftgröße und die Farbe und Ähnliches auswählen.
Ich gehe von einer Schriftgröße 12 aus.
Ja.
Das sieht hinten wieder sauberer aus.
Lassen Sie uns herausfinden, was der einzige Gedanke hier ist.
Und wenn Sie das Track-Menü nicht haben, müssen Sie es hier
auswählen und können dann die Punkte per Drag & Drop verschieben.
Wie wir sehen, bezieht sich dieser auf die Klasse, den Init.
Wir werden also diesen Konstruktor für diese Klasse nicht aufrufen, aber
natürlich ist er verfügbar und wird daher nicht referenziert oder ja.
Hier gibt es einige Randnotizen, weil wir diese Funktion nicht
aufrufen, aber sie ist im Android-System selbst hängen geblieben.
Daher haben wir diese einzelnen Punkte, die hier nicht mehr genannt zu werden scheinen.
Mit der rechten Maustaste können Sie navigieren.
Also, ja, unsere Flaggenmethode hier zu finden, ist wie die Suche nach Waldo in einem wirklich großen Bild.
Und ich denke, das ist auch nicht der Ansatz, den wir verfolgen wollen.
Markieren wir unsere Flaggenfunktion, damit wir sie leichter finden können.
Wir gehen zurück in das Datenlabor, suchen nach einem Etikett und dann nach der Flaggenmethode.
Und wir können sehen, dass die Ressource leider nicht wirklich reduziert wurde,
weil wir diesen Flex-Parameter und all diese Funktionen dort drüben haben.
Wir müssen einen anderen Ansatz wählen.
Deshalb suchen wir nach einem, denn das ist der Klassenname, der diese Methode enthält.
Und hier können wir sehen, dass der Fokus nur auf dem Teil nach diesem Pfeil liegt.
Hier haben wir also das Methodenflag.
Machen Sie weiter in ihm.
Ablenkung und ein Vergleich.
Ich klicke mit der linken Maustaste auf die Fahne hier drüben, dann mit der rechten Maustaste und sage Knoten bearbeiten.
Und jetzt können wir das Layout für diesen Knotenpunkt anpassen.
Ich mache einen Farbwechsel, also klicke ich auf diesen.
Ich wähle grün aus und verfolge dann auch diese Schaltfläche hier,
die, so vermute ich, einen Alphawert für diese Farbe darstellt.
Schauen wir mal.
Ja, hier gibt es ein paar mehr Werte.
Wenn Sie jetzt auf "OK" klicken, sehen Sie, dass die Flagge jetzt auf grün gesetzt wurde.
Lass uns zurückgehen und unseren Waldo dort drüben suchen.
Zoomen Sie ein wenig heraus, und hier sehen Sie es.
Ja, es ist gut, ihn hier zu sehen.
Sehr schön.
Wir haben unsere Flag-Methode und können nun auch sehen, welche Funktionen auf diese verweisen.
Wir können jetzt damit beginnen, diese Funktionen herauszuziehen, aber das ist kein schöner Ansatz.
Deshalb verwenden wir einen Filter oder ein Layout.
Wir wählen diesen, diesen Orion-Code.
Das ist ziemlich gut für unsere Aufgabe.
Dann drücken wir auf "Ausführen", und jetzt können wir die Änderungen im Layout sehen.
Ich denke, wir können auf "Stopp" drücken, denn es ist bereits geschehen.
Sie haben auch einige andere, zum Beispiel für die Erweiterung.
Dann werden Sie dieses ganze Diagramm erweitern.
Es ist eher ein Heranzoomen und auch ein Zusammenziehen und andere Dinge.
Sie können also gerne mit den Layouts herumspielen.
In meinem Fall, ja, ich denke, dieser ist wirklich gut für unsere Aufgabe.
Ja.
Lassen Sie uns das jetzt ein wenig mehr manuell filtern.
Unsere Funktionsaufrufe sind nun hier gestapelt, und wir können sie alle auswählen.
Lassen Sie mich das herausfinden, das nicht in unserem Block enthalten ist.
Ja.
Wir verfolgen sie jetzt ein wenig gemeinsam.
Auf diese Weise.
Wir verwenden diesen Cursor hier und konfigurieren die Größe des Cursors auf, sagen wir, 80.
Es kann ein bisschen größer sein.
120.
Ja.
Und jetzt können wir einfach oder sorry, wir müssen an der Hand
bleiben und jetzt können wir einfach klicken und diesen Block herausziehen.
Also gut.
Wir haben unsere Funktion isoliert und in Bezug auf unsere Flick-Methode vom Rest abgegrenzt.
Sehr schön.
Jetzt mache ich dort ein paar manuelle Einstellungen, damit wir einen besseren Überblick bekommen.
Ich werde diesen Prozess ein wenig beschleunigen.
Deshalb schalte ich die Größe des Cursors zurück und mache jetzt Folgendes.
Also gut.
Hier haben wir nun unseren endgültigen Überblick über unsere Funktion namens Graph.
Lassen Sie uns herausfinden, wie wir diese Flaggenmethode erreichen können.
Also fangen wir hier an und ja, hier müssen wir sehr
vorsichtig sein, denn hier können wir sehen, wenn wir heranzoomen.
Dieser Pfeil zeigt in unsere Richtung und dieser grüne Pfeil zeigt von unserer Flaggenmethode weg.
Daher müssen wir den linken Ansatz verfolgen, weil wir unsere Flaggenmethode erreichen wollen.
Okay, mal sehen, was wir anrufen müssen.
In diesem.
Wir müssen diesen einen anrufen, damit er weiterzieht, und diesen einen, damit
er drei anruft, damit er weiterzieht, und diesen einen, damit er weiterzieht.
Ein Schritt weiter.
Und hier sind wir bei unserer Kontrolle, die unser Einstiegspunkt ist.
Okay, jetzt haben wir diese Tasche aufgespürt.
Lassen Sie uns herausfinden, wie wir dies von Anfang an erreichen können.
In Ordnung, wir haben unsere Prüfmethode, und diese ruft eine Bewegung auf.
Wir sehen das an dem Pfeil hier drüben.
Jetzt haben wir hier drüben unseren ersten Zweig.
Diese Methode trifft also eine Entscheidung, und wir landen in.
Der hier drüben muss weitermachen, sonst landen wir bei fünf Endwerten.
Und wenn wir bei fünf Endwerten landen, sind wir raus, weil wir unsere Methode
oben nicht mehr erreichen können, weil es keinen Verweis auf diese Methode gibt.
Dieser geht von hier nach dort, aber er wird nicht rückwärts laufen.
Sie können auch dies sehen.
Wenn Sie den Mauszeiger darüber bewegen, sehen Sie nur diese Zeile am unteren Rand.
Zu diesem Zeitpunkt wissen wir bereits, dass
wir diesen Check machen müssen, um weiterzukommen.
Von da an gibt es nur noch eine Richtung in drei.
Schritt eins, vier, weitergehen.
Und hier haben wir unseren nächsten Zweig.
Und dieser ist auch sehr wichtig, denn er trifft nun die endgültige Entscheidung.
Wenn wir unsere Kontrolle hier drüben machen, unsere Flaggenkontrolle, oder wenn wir bei dieser einen Fünf landen, gehen wir weiter.
Aber das hier ist eine Sackgasse.
Wenn wir also in diese Richtung gehen, verlieren wir.
Wenn wir es richtig anstellen, gewinnen wir.
Das ist ganz einfach.
Und ja, das ist der Ansatz, wie man einen Kerngraphen erstellt und handhabt.
Und nehmen wir an, ich hätte es nicht so schön für Sie genannt.
Es gibt also keine Methode eins, zwei, drei und vier.
Diese Methoden heißen also a, B, A, B, A, B, C und so weiter.
Sie würden verrückt werden, wenn Sie auf diesen Code starren und versuchen, ihn zu entschlüsseln.
Welche Richtung wird in der endgültigen Flagge angezeigt? Überprüfen Sie hier und
vielleicht die Flagge Prüfung ist nicht als Flagge und Dinge wie
diese genannt, so können Sie versuchen, diesen Ansatz manuell zu tun.
Es handelt sich hier auch nicht um ein großes Flussdiagramm, aber stellen Sie sich
vor, Sie müssten 30 oder 40 Funktionscodes durchlaufen, um an Ihr Ziel zu gelangen.
Ich denke, dies ist der beste Ansatz, zumindest meiner Meinung nach, um diese Aufgabe zu lösen.
Fühlen Sie sich frei, diese Aufgabe zu lösen.
Ich werde hier nicht spoilern.
Und ja, wenn Sie Fragen zur Lösung des Problems haben, schreiben Sie mir bitte eine Nachricht.
Also gut.
Im nächsten Abschnitt werfen wir einen Blick auf die reale Welt
von Android Capture the Flick, und das war ziemlich schwierig.
Die Darstellung dieses Ansatzes bei einer Herausforderung wie dieser verdeutlicht den Vorteil der Erstellung eines Aufrufdiagramms oder eines
Flussdiagramms oder einer Anwendung, die verschleiert oder so gestaltet ist, dass sie schwer rückgängig zu machen ist.
Ingenieur Sie können gerne damit herumspielen.
Darüber hinaus auch mit den Einstellungen, dem Layout, der Farbe, der Definition und ähnlichen Dingen.
Und ja, nachdem du das hier beendet hast, freue ich mich darauf, dich im nächsten Abschnitt zu
sehen, in dem wir einen Blick auf die reale Welt werfen, die Capture the Flag Herausforderung.
Ich werde Sie also dort sehen.