2016-08-08 39 views
1

Ich versuche derzeit, nicht verwendete grafische Ressourcen aus einer App in Kompilierzeit zu entfernen. Ich weiß, Android Studio kann mir helfen, unbenutzte manuell zu entfernen, aber ich muss in der Lage sein, sie in Kompilierzeit zu entfernen; Auf diese Weise kann ich Proguard ausführen, um nicht verwendete Klassen zu entfernen, und dann alle Bilder entfernen, auf die von diesen Klassen verwiesen wird.Entfernen Sie nicht verwendete Ressourcen von der Android App zur Kompilierzeit

Im Moment habe ich das tun kann, was wird mich nicht verwendetes Bild zu einem 1x1 schwarzen Punkt geschrumpft:

android { 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
     } 
    } 
} 

kann ich nicht die Dateien habe es (sogar geschrumpft). Gibt es eine Möglichkeit, Proguard diese Bilder wirklich zu entfernen (anstatt sie zu verkleinern) oder umzubenennen? Vielleicht könnte ich ein anderes Werkzeug verwenden?

edit: nur zur Klarstellung, ich müsste die Ressourcen "unbenutzt" von Proguard entfernt oder umbenannt werden.

Antwort

0

ProGuard (oder der neue Jack-Compiler) schrumpfen und verschleiern nur Bytecode. Das Ressourcenschrumpfungswerkzeug entfernt oder ersetzt anschließend nicht verwendete Ressourcendateien.

ProGuard's kommerzielle Erweiterung DexGuard verkleinert, optimiert und verschleiert Bytecode, das Android-Manifest, Ressourcen, Ressourcendateien, Asset-Dateien und native Bibliotheken. Soweit ich weiß, ist es das einzige Werkzeug, das alle Inhalte gleichzeitig analysiert und optimiert. Zum Beispiel entfernt es tatsächlich nicht verwendete Klassen und entsprechende ungenutzte Ressourcen und Ressourcendateien.

[entwickeln wir ProGuard und DexGuard bei GuardSquare]

+0

Hallo Eric, vielen Dank für deine Antwort.Ich verstehe, dass es keine Möglichkeit gibt, Proguard Ressourcen zu entfernen, da diese Aufgabe von einem anderen Tool erfüllt wird. Ich verstehe auch, dass Dexguard alle unbenutzten Bilder entfernen würde (nicht optimieren, aber entfernen), habe ich recht? –

+0

Das ist richtig, DexGuard entfernt die unbenutzten Bilder. Zu den Optimierungen gehören beispielsweise das Einfügen von Ressourcenkonstanten in Code und andere Ressourcen. –

+0

Vielen Dank Eric. Du warst sehr hilfreich –

0

Um ungenutzte Ressourcen zu entfernen, können Sie Android Lint-Tool von ADT 16 verwenden. Es wird Ihnen helfen, nicht nur ungenutzte Ressourcen zu entfernen, sondern auch potenzielle Fehler zu finden.

http://tools.android.com/tips/lint

Sie können auch proguard im Release-Modus

Das ProGuard Werkzeug schrumpft, optimiert und verschleiert den Code durch Entfernen nicht verwendeten Code und Umbenennung Klassen, Felder und Methoden mit semantisch obskuren Namen ermöglichen. Das Ergebnis ist eine kleinere .apk-Datei, die schwieriger zu rekonstruieren ist.

http://developer.android.com/tools/help/proguard.html

Sie können ungenutzte Ressourcen von Android Studio leicht suchen. Drücken Sie einfach Strg + Alt + Umschalt + i und geben Sie "Nicht verwendete Ressourcen" (ohne Anführungszeichen) ein. Das wird Flusen ausführen. Super einfache Möglichkeit, wie man lint-Befehle (und andere Sachen von IDE) ausführt.

+0

Hallo Shanto, ich beide Lint belive und das "Entfernen von nicht verwendeten Ressourcen" Tools von Android Studio sind die gleichen. Wie gesagt, ich brauche etwas, um diese Ressourcen während der Kompilierung automatisch zu entfernen. Sie manuell zu entfernen ist keine Option, da einige Ressourcen, die nach der Anwendung von Proguard nicht verwendet wurden, ebenfalls entfernt werden sollten. Danke für die Mühe, obwohl –