Suche…


Einführung

Proguard ist ein freier Java-Klassendatei-Verkleinerer, Optimierer, Verschleierer und Vorversteller. Es erkennt und entfernt nicht verwendete Klassen, Felder, Methoden und Attribute. Es optimiert den Bytecode und entfernt nicht verwendete Anweisungen. Die verbleibenden Klassen, Felder und Methoden werden mit kurzen, sinnlosen Namen umbenannt.

Verkleinern Sie Ihren Code und Ihre Ressourcen mit proguard

Um Ihre APK-Datei so klein wie möglich zu machen, sollten Sie das Verkleinern aktivieren, um nicht verwendeten Code und Ressourcen in Ihrem Release-Build zu entfernen. Diese Seite beschreibt, wie Sie dies tun und wie Sie festlegen, welcher Code und welche Ressourcen während des Builds aufbewahrt oder verworfen werden sollen.

Code-Verkleinerung ist in ProGuard verfügbar, das nicht verwendete Klassen, Felder, Methoden und Attribute aus Ihrer gepackten App erkennt und entfernt, einschließlich derjenigen aus enthaltenen Codebibliotheken (damit ein wertvolles Werkzeug für die Verwendung des Referenzgrenzwerts von 64 KB). ProGuard optimiert außerdem den Bytecode, entfernt nicht verwendete Codeanweisungen und verschleiert die verbleibenden Klassen, Felder und Methoden mit Kurznamen. Aufgrund des verschleierten Codes ist es schwierig, Ihr APK Reverse Engineering durchzuführen. Dies ist besonders nützlich, wenn Ihre App sicherheitsrelevante Funktionen verwendet, z. B. die Lizenzprüfung.

Das Android-Plugin für Gradle bietet Ressourcenreduzierung, mit der ungenutzte Ressourcen, einschließlich ungenutzter Ressourcen in Codebibliotheken, aus der gepackten App entfernt werden. Es funktioniert in Verbindung mit dem Schrumpfen von Code, sodass nach dem Entfernen von nicht verwendetem Code alle Ressourcen, auf die nicht mehr verwiesen wird, auch sicher entfernt werden können.

Verkleinern Sie Ihren Code

minifyEnabled Sie minifyEnabled true zum entsprechenden Build-Typ in Ihrer build.gradle Datei hinzu, um die Code-Verkleinerung mit ProGuard build.gradle .

Beachten Sie, dass das Verkürzen von Code die Erstellungszeit verlangsamt. Sie sollten es daher möglichst nicht in Ihrem Debug-Build verwenden. Es ist jedoch wichtig, dass Sie den Code für die endgültige APK-Verkleinerung aktivieren, die zum Testen verwendet wird. Andernfalls kann es zu Fehlern kommen, wenn Sie den Code nicht ausreichend anpassen.

Mit dem folgenden Snippet aus einer build.gradle Datei können Sie beispielsweise den Code für den Release-Build verkleinern:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

Neben der minifyEnabled Eigenschaft, die proguardFiles definiert Eigenschaft der ProGuard rules :

Die Methode getDefaultProguardFile ('proguard-android.txt') ruft die ProGuard-Standardeinstellungen aus dem Android SDK- tools/proguard/ folder . Tipp: Um noch mehr Code zu verkleinern, probieren Sie die Datei proguard-android-optimize.txt , die sich am selben Ort befindet. Es enthält die gleichen ProGuard-Regeln, jedoch mit anderen Optimierungen, die eine Analyse auf Bytecode-Ebene (innerhalb und zwischen Methoden) durchführen, um die APK-Größe weiter zu reduzieren und zu beschleunigen. In der Datei proguard-rules.pro können Sie benutzerdefinierte ProGuard-Regeln hinzufügen. Diese Datei befindet sich standardmäßig im Stammverzeichnis des Moduls (neben der Datei build.gradle). Um weitere ProGuard-Regeln hinzuzufügen, die für jede Buildvariante spezifisch sind, fügen Sie dem entsprechenden productFlavor Block eine weitere proguardFiles productFlavor . Die folgende Gradle-Datei fügt beispielsweise Flavor2-rules.pro zum Flavour2-Produktgeschmack hinzu. Nun verwendet flavor2 alle drei ProGuard-Regeln, da auch die Regeln aus dem Release-Block angewendet werden.

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                   'proguard-rules.pro'
        }
    }
    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'flavor2-rules.pro'
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow