Android Proguard ist nicht inline
Ich verwende das neueste Android SDK (4.1) und habe versucht, ein signiertes Glas mit aktiviertem Proguard zu exportieren. Nach dem Dekompilieren der optimierten APK stellte ich jedoch fest, dass Methoden, von denen ich erwartet hätte, dass sie inline sind, nicht inline sind.
Ich weiß, dass Proguard ausgeführt wurde, weil der Code korrekt verschleiert wurde. Um dies zu bestätigen, habe ich meiner Aktivität diese Methode hinzugefügt:
private void testInlining()
{
mConfig = null;
}
Diese private Methode wird in meiner Aktivität nur einmal aufgerufen. Da sie privat ist, sollte es für das Optimierungsprogramm sehr offensichtlich sein, dass sie nur einmal aufgerufen und inline gesetzt werden sollte.
Die Dokumentation besagt, dass alle Optimierungen standardmäßig aktiviert sind und dass Proguard "Inline-Methoden, die kurz sind oder nur einmal aufgerufen werden".
Gibt es ein bestimmtes Flag, das ich Proguard geben sollte, um Inlining zu aktivieren?
BEARBEITEN
Meine proguard Konfigurationsdatei enthält
-optimizationpasses 5
-allowaccessmodification
-overloadaggressively
-repackageclasses ''
-dontskipnonpubliclibraryclasses
BEARBEITEN
Nach dem Gebrauch
-whyareyoukeeping class com.templatecompany.templateappname.EntryPointActivity {*;}
Ich verstehe den Grund, warum die Methode nicht inline ist:
[proguard] com.templatecompany.templateappname.EntryPointActivity: void testInlining() (20:21)
[proguard] is invoked by com.templatecompany.templateappname.EntryPointActivity: com.td.media.ivConnection.IvConfig getIvConfig() (14:15)
[proguard] implements com.td.widget.MainActivity: com.td.media.ivConnection.IvConfig getIvConfig()
[proguard] is invoked by com.td.widget.MainActivity: void onCreate(android.os.Bundle) (140:175)
[proguard] implements android.app.Activity: void onCreate(android.os.Bundle)
[proguard] is a library method.
Aber ich bin mir nicht sicher, wie die Tatsache ist, dass die MethodetestInlining
wird in der Methode verwendetgetIvConfig
die wiederum von einer anderen methode verwendet wird, verhindert das inlining auftestInlining
imgetIvConfig
.