4

Es sieht so aus, als ob die classes.dex der apk-Datei im Ausgabeordner sich von der installierten App unterscheidet.Komprimiert Android Studio die Datei classes.dex?

Ich benutze classes.dex Datei für einige Sicherheitsprobleme, so entpackte ich normalerweise die letzte apk-Datei und bekam Informationen aus classes.dex Datei. Aber wenn ich classes.dex Datei zur Laufzeit liest, ist die Dateigröße so unterschiedlich. (8MB vs 46KB)

App selbst funktioniert gut. Jemand sagte, dass Proguard die Datei classes.dex leichter macht, aber ich habe Proguard ausgeschaltet. (useProguard false, minifyEnabled false in build.gradle)

Gibt es etwas, was ich versuchen kann? Vielen Dank im Voraus.

Ein Satz Zusammenfassung: classes.dex der app/build/outputs/apk/app.apk-Datei erstellt von Android Studio unterscheidet sich von der classes.dex, die ich von den tatsächlichen App installiert Lage von Android-Gerät gefunden.

+0

Ihre Frage ist unklar. Was versuchst du zu erreichen? – Abhi

+0

@Abhi Ich habe eine Zusammenfassung :) Danke – wtkim

Antwort

1

Eigentlich Android-Studio macht die Umwandlung und der Begriff, den Sie "komprimieren" geschieht standardmäßig beim Erstellen.

Der Kompilierungsprozess für Android-Apps unterscheidet sich sehr von anderen Java-Anwendungen. Aber es beginnt in der gleichen Art und Weise: Ihre Java-Quellcode-Dateien in .class Dateien kompiliert werden mit dem javac Befehl: conversion_to_class_file

Die .class-Dateien enthalten Standard-Oracle JVM Java-Byte-Codes. Android-Geräte verwenden dieses Bytecode-Format jedoch nicht. Stattdessen hat Android sein eigenes Byte-Code-Format namens Dalvik. Dalvik-Bytecodes sind wie Oracle-JVM-Bytecodes Maschinencodeanweisungen für einen theoretischen Prozessor.

Der Kompilierungsprozess muss die Dateien .class und alle .jar-Bibliotheken in eine einzige Datei classes.dex konvertieren, die Dalvik-Bytecodes enthält. Dies geschieht mit dem dx Befehl: Dies ist, wie Ihre classes.dex Datei generiert wird.

conversion_to_dex_file

Die classes.dex Datei und die Ressourcen aus Ihrer Anwendung, wie Bilder und Layouts, werden dann in eine Zip-Datei komprimiert wie genannt ein Android-Paket oder .apk Datei. Dies wird mit dem Android-Asset-Packaging Tool gemacht oder aapt:

conversion_to_apk_file

Ihre proguard Regeln während des Build-Prozesses helfen zu

  • Shrink - erkennt und entfernt ungenutzte Klassen, Felder, Methoden, und Attribute.
  • Optimize - analysiert und optimiert den Bytecode der Methoden.
  • Obfuscate - benennt die verbleibenden Klassen, Felder und Methoden um, indem kurze, bedeutungslose Namen verwendet werden.

Ich hoffe, es hilft Ihnen in gewissem Maße.
Wenn du mehr über auf wissen wollen, wie Android-Anwendungen sind gebaut und betrieben, Read this.

.

Verwandte Themen