Alles klar, Leute.
Beginnen wir mit der Dateistruktur von Android.
Und dieses Thema ist ja, es besteht größtenteils aus dem theoretischen Teil, aber ich versuche mein Bestes, es
so praktisch wie möglich zu gestalten, damit es nicht zu langweilig wird, aber es ist wirklich wichtig.
Sie müssen also die Dateistruktur einer Android-Anwendung verstehen, denn wenn Sie später all diese Dateien
zurückentwickeln, müssen wir wissen, welche Dateien für uns interessant sind und welche übersprungen werden können.
Und deshalb würde ich sagen, lasst uns gehen.
Und wir beginnen mit unserer Android-Anwendung selbst.
Hier haben wir also unsere Spiel-APK-Datei und die Frage ist, was ist diese APK-Erweiterung? Also zum Beispiel,
auf einer Java-Datei, haben wir char auf einem Bild, haben wir einen Punkt pag, was ist der
Dateityp apk und die offizielle Ankündigung ist, lassen Sie mich diese Anwendung Schrägstrich Anbieter android Punkt Paket
Bindestrich-Archiv und ich habe nur einmal in einem sehr guten Buch, das die Android-Sicherheit Interna ist gelesen.
Und um ehrlich zu sein, habe ich es nie benutzt, denn eine APK-Datei können wir so einfach wie ein SIP-Archiv behandeln.
Wir kleben unseren SIP-Aufkleber darauf und behandeln es wie ein SIP-Archiv.
Daher können wir einfach unser Terminal öffnen und ausführen und sip auf diese so
können wir einfach unsicher APK-Datei und dann erhalten wir alle diese internen Dateien.
Und jetzt kommt die große Frage: Was sind das für
Dateien? Und das machen wir jetzt Schritt für Schritt.
Wir gehen also alle diese Dateien durch und ich werde Ihnen erklären, wofür sie verwendet werden.
Und deshalb müssen wir unsere erste APK-Datei herunterladen.
Normalerweise würde ich also mein Gerät holen.
Ich würde auch die APK aus dem Google Play Store herunterladen, dann das Gerät mit
dem Laptop verbinden und den Paketmanager verwenden, um diese APK auf meinem Laptop abzurufen.
In diesem Fall ist das nicht nötig, denn ich habe die
APK-Datei bereits zur Verfügung gestellt, du findest sie also im Download-Bereich.
Daher gehen Sie bitte durch die Datei Registerkarte dieses Abschnitts und laden Sie diese apk.
Wir werden später noch lernen, wie man diesen Ansatz umsetzt, aber jetzt konzentrieren
wir uns erst einmal auf den wichtigen Teil dieses Abschnitts, nämlich die Dateistruktur.
Gut, hier sind wir nun bei unserer Ubuntu-VM und ich habe diese Anwendung bereits heruntergeladen.
Es befindet sich gleich dort drüben, im Verzeichnis der Downloads.
Jetzt kopiere ich diese Datei, gehe in die Anwendungen und erstelle ein neues Verzeichnis.
Nennen Sie diesen Raum Pang und ich füge ihn hier ein.
Dann öffne ich mit der rechten Maustaste ein neues Terminal.
Und dann sind wir direkt in diesem Verzeichnis hier drüben.
Wenn ich also p w mache, sehen Sie, dass wir direkt hier sind und
Sie müssen nicht in Ihrem Terminal öffnen und durch all diese Dateien blättern.
In Ordnung, jetzt lass uns rennen und daran nippen.
Und hier können wir sehen, dass ich das vergrößern werde.
Es extrahiert alle diese einzelnen Dateien und alle diese einzelnen Dateien.
Machen Sie diese Anwendung zu dem, was sie ist, diese Android-App.
Und jetzt tauchen wir in diese Akten ein.
Ja, ja.
Und herausfinden, wozu sie dienen und ob sie für uns interessant sind oder nicht.
Wir beginnen mit dem Anlagenverzeichnis, denn das ist das erste dort drüben, und
das Anlagenverzeichnis ist wirklich wichtig für uns, denn das Anlagenverzeichnis enthält all
diese schönen Ressourcen, aber es enthält nicht nur Bilder oder solche Dinge.
Die Entwickler können zusätzliche Dateien hinzufügen.
Wenn Sie z. B. mit Zertifikatsanheftung oder Ähnlichem konfrontiert sind, werden Sie vielleicht feststellen, dass
dieses Verzeichnis hier das Zertifikat enthält, das für den Prozess der Zertifikatsanheftung verwendet wird.
Auch hierauf werden wir später noch eingehen.
Aber ja, Sie können Ihre Ressourcen und externen Dateien dort speichern.
Und in diesem Fall haben wir einige Splash-Splash-Bilder und einige Musikdateien und solche Dinge.
Es lohnt sich also immer, einen Blick in dieses Verzeichnis zu werfen.
Als Nächstes haben wir das Einkommensverzeichnis, und dieses enthält keine für uns interessanten Daten.
Wir können einige XML-Dateien oder ja, einige Fragmente zu finden, aber ich nicht
zu viel Zeit auf diese, auch wenn ich meine Umkehrung Ansatz zu tun.
Sie können dieses Thema also erst einmal auslassen.
Dann haben wir das lib-Verzeichnis, und das ist wieder sehr wichtig, weil wir
hier sehen können, dass wir EAB V sieben und x 86 haben.
Das Lib-Verzeichnis enthält also die gemeinsamen Objektdateien.
In diesem Fall haben wir die Lib.
In einer gemeinsamen Objektdatei wird also der C++-Code in diese Datei kompiliert.
Normalerweise schreiben Sie Ihre Android-Anwendung, und ja, dieser Teil wird in Java erledigt, und
wenn Sie Ihren Java-Code kompilieren, erhalten Sie eine neue Datei, die der Klassenspeichertext ist.
Wir werden diese Datei später noch genauer unter die Lupe nehmen, aber Java ist noch nicht
leistungsfähig genug, um einige komplexe Aufgaben zu erledigen, z. B. Rendering, 3D-Effekte, Schattenwurf und Ähnliches.
Daher haben die Entwickler auch die Möglichkeit, C++-Code in den Java-Code
einzubinden, und dieser Teil wird nun in diese gemeinsamen Objektdateien kompiliert.
Und warum ist das so wichtig? Weil sie prozessorabhängig
sind, d.h. Ihr Smartphone hier drüben hat eine
Arm-CPU und deshalb haben wir diese beiden Verzeichnisse.
Diese Bibliotheken werden also für die ARM-Plattform kompiliert, die die Plattform des Originalgeräts ist.
Und das hier drüben ist die x86-Plattform, die zum Beispiel unsere virtuelle Maschine ist.
Und wenn wir einen Blick in das Lib-Verzeichnis werfen, können wir sofort erkennen, ob diese
Anwendung auf unserer virtuellen Maschine läuft, weil sie die x86-Abhängigkeit hat, oder ob man diese
Anwendung nur auf unserem nativen Gerät verwenden kann, weil wir im Moment keinen ARM-Emulator haben.
Wenn Sie den ARM-Emulator verwenden möchten, müssen wir uns an das Android-Studio des Geräts halten.
Aber das ist super langsam und ich würde das gerne so lange wie möglich umgehen.
Das müssen wir später verwenden.
Aber im Moment bleiben wir bei der virtuellen Maschine.
Wir müssen nur wissen, dass dies gemeinsam genutzte Objektdateien sind und dass es sich um C++-Code handelt, der
in diese Dateien kompiliert wurde, und es lohnt sich auf jeden Fall, einen Blick darauf zu werfen, denn
C++-Code ist schwer zurückzuentwickeln, oder zumindest ist es für die meisten Leute schwieriger, ihn zurückzuentwickeln als Java-Code.
Deshalb versuchen Entwickler manchmal, Dinge im C++-Code zu verstecken.
Und wir werden in diesem Kurs auch lernen, wie wir damit umgehen können.
Aber erst einmal müssen wir wissen, dass es sich hier um eine
C-C++-Codedatei handelt, und ja, sie ist von der Architektur der CPU abhängig.
Wir müssen also einen Blick darauf werfen, um herauszufinden, ob wir dies auf unserer virtuellen Maschine ausführen können
oder ob wir ein echtes Gerät oder die AB-Miniatur verwenden müssen, was bei diesen beiden der Fall ist.
Also gut.
Als Nächstes haben wir das Meta-INF-Verzeichnis, das für den Signiervorgang wichtig ist.
Jede Android-Anwendung muss signiert werden.
Wir haben ein, ja, ich schätze drei oder vier Videos über die Unterzeichnung, denn das ist ein
Ja, ein ziemlich komplexes Thema, und wir werden später darauf eingehen, wenn wir über das Meta-Infraverzeichnis sprechen.
Im Moment müssen Sie nur dies wissen.
Hier ist die Unterschrift auf Ihrem Zertifikat.
Diese hier ist eine Signaturdatei und diese hier ist eine Manifestdatei und
diese enthält Hash-Summen über all diese einzelnen Kämpfe in Ihrer App.
Das ist auch deshalb wichtig für uns, weil Entwickler diese Hashes manchmal als eine Art Manipulationsschutz verwenden.
Wir werden später in diesem Kapitel lernen, wie man diese Werte berechnet und wie man mit diesen Dateien umgeht.
Im Moment müssen Sie nur das Meta-Verzeichnis kennen, in dem sich das Zertifikat befindet, sowie einige zusätzliche Informationen.
Es geht um den Unterzeichnungsprozess der Bewerbung.
Okay, dann haben wir noch das Rest-Verzeichnis, das dem
Asset-Verzeichnis sehr ähnlich ist, sich aber ein wenig unterscheidet.
Hier haben wir zum Beispiel unser Symbol, und dieses ist
ein größeres Symbol, da es sich um zwei Vorlagen handelt.
Wenn Sie zum Beispiel diese Anwendung auf Ihrer
Vorlage installieren, erscheint dieses Symbol auf Ihrem Bildschirm.
Und wenn Sie das auf Ihrem Smartphone installieren, haben Sie z. B. hier ein kleineres Symbol.
Und das Ressourcenverzeichnis kann auch zusätzliche Dateien enthalten.
Wenn wir also nach zusätzlichen Dateien suchen, können wir im Verzeichnis assets und im Verzeichnis resources suchen.
Auch in Bezug auf Bilder, Audiodateien und dergleichen lohnt sich ein Blick in beide Verzeichnisse.
Als Nächstes haben wir die Android Manifest XML und dies ist auch ein Abschnitt für sich, weil diese
Datei wirklich wichtig ist und wir werden in einem separaten Video darauf eingehen, weil sie wirklich groß ist.
Eine schöne Tatsache ist, wenn wir versuchen, dies jetzt zu lesen, lassen Sie
mich dies in einem Terminal öffnen und ich drucke diese Datei aus.
Wir werden feststellen, dass dies nicht wie eine XML-Datei aussieht.
Das hier ist ein binärer Mist.
Und ja, das scheinen zumindest einige Fäden zu sein.
Und das Android-System führt einen eigenen Serialisierungsprozess für XML-Dateien durch.
Wenn wir also die Anwendung kompilieren, wird das Android-Manifest in XML in dieses Binärformat
serialisiert, und wir können die ursprüngliche Version z. B. mit dem APK-Tool rekonstruieren.
Und wir werden auch lernen, wie man das später im Kurs macht, für
jetzt, und wir werden auch lernen, wie man das später im Kurs macht.
Aber für jetzt müssen wir wissen, dass wir, wenn wir meine Anwendung
beantwortet haben, das Android-Manifest-Beispiel nicht ändern können, weil es im Binärformat ist.
Und doch ist es eine Fortsetzungsgeschichte.
Es ist im Moment nicht wirklich einfach, sie zu bearbeiten.
Nur als kurze Anmerkung: Die Android-Manifest-XML-E-Mail enthält Metainformationen über die Anwendung.
Sie hat zum Beispiel einen Paketnamen, der ein eindeutiger Bezeichner für diese Anwendung ist.
Sie enthält auch die Berechtigungen, die die App verwenden kann, und
andere Dinge, auf die wir später noch näher eingehen werden.
Es handelt sich also um eine Art Konfigurationsdatei, aber eine wirklich wichtige Datei.
Sie gibt auch an, ob Ihre Anwendung ein Debugger ist oder nicht, z.B. so.
Als Nächstes haben wir eine Textdatei für den Klassenspeicher, und das
ist die wichtigste Datei für uns, denn sie enthält unseren Java-Quellcode.
Dieser Java-Quellcode wird in einem ausführbaren Dalvik-Format kompiliert, und wir
werden später lernen, wie man mit diesem Dateiformat umgeht.
Wir haben auch ein eigenes Kapitel dafür, das Smiley-Kapitel, und dort lernen wir,
wie man das ausführbare Format des Stilbuchs liest, analysiert und sogar schreibt.
Im Moment möchte ich Sie nicht so sehr schockieren.
Wir müssen uns also nur vor Augen halten, dass dieser den
Java-Quellcode der Anwendung enthält, der in einem ausführbaren Dalvik-Format kompiliert wurde.
Und das hier ist die Dateierweiterung.
Im nächsten Abschnitt werden wir auch einen Blick in diese Datei
werfen, ein wenig in sie eintauchen und herausfinden, was sie enthält.
Und schließlich haben wir die Ressourcen gespeichert.
RC Und diese Datei enthält Informationen über z. B.
Zeichenketten in Ihrer Anwendung oder Farbdefinitionen und solche Dinge.
Meiner Meinung nach ist das nicht so wichtig, weil ich dort nicht so viele interessante
Dinge finde, weil es nicht die Zeichenketten sind, die Sie in Ihrer Anwendung verwenden.
Es handelt sich um Zeichenfolgen, die Sie in dieser Datei für Ihre Anwendung definieren können.
Wenn Sie z. B. mehrere Sprachen haben, können Sie all diese Strings dort definieren und dann
einfach verschiedene Sprachen laden, die auf dem Land des Benutzers basieren, der die App öffnet.
Und ja, ich finde diese Datei nicht wirklich interessant, also würde ich sie am Anfang überspringen.
Es ist also nicht erwähnenswert.
Und wenn Sie anfangen, Android-Anwendungen zu hacken, wenn Sie vielleicht nach einer ganz bestimmten Aufgabe
suchen und diese nirgendwo anders finden können, sollten Sie vielleicht in diese Datei eintauchen.
Aber lassen Sie uns das noch einmal kurz auf unserer Folie zusammenfassen.
Okay? Hier haben wir
wieder den großen Überblick.
So enthält das Verzeichnis assets und das Verzeichnis resource Bilder und zusätzliche Dateien des Entwicklers.
Dann haben wir die Bibliotheken, d.h. die
C-C++-Code-Zertifizierung und die Signierungsinformationen im Meta-Info-Verzeichnis.
Die Android Manifest XML, die eine sehr wichtige Konfigurationsdatei ist, befindet sich in einem binären Zustand.
Wenn Sie diese Anwendung entpacken, haben wir einen klassischen Text,
der der Java-Quellcode ist, der im Dalvik-Dateiformat kompiliert wurde.
Es handelt sich also um ein Byte-Format, in dem der Java-Code gespeichert wird.
Und schließlich haben wir die Ressourcen RC, die als Common Directory übersprungen werden können.
Diese beiden Dateien oder Verzeichnisse sind also nicht wichtig, aber leider ist der Rest für uns wichtig.
Ja.
Das war's dann auch schon mit der Dateistruktur.
Ich möchte Ihnen nur einen kurzen Überblick über diese einzelnen Dateien und ihren Zweck geben.
Und wir werden unsere Kenntnisse im Laufe dieses Kapitels vertiefen,
wenn wir uns diese interessanten Dateien und Verzeichnisse genauer ansehen.
Ich freue mich also darauf, Sie im nächsten Abschnitt zu sehen.