ich mit einer einfachen Klasse getestet (alle diese Methoden sind nicht referenzierte):
public class Test
{
private void privateMethod()
{
System.out.println("private");
}
protected void protectedMethod()
{
System.out.println("protected");
}
public void publicMethod()
{
System.out.println("public");
}
void method()
{
System.out.println("method");
}
}
ich die APK zusammengestellt, extrahiert Test.class
und es dekompilierten (mit javap -c
). Ich habe folgende Ergebnisse erhalten. Ich habe auch mit einem Glas anstelle einer APK getestet, und das Ergebnis ist genau das gleiche. Ich habe Java 1.6.0_29 benutzt.
protected void protectedMethod();
Code:
0: getstatic #44 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #47 // String protected
5: invokevirtual #46 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
public void publicMethod();
Code:
0: getstatic #44 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #48 // String public
5: invokevirtual #46 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
void method();
Code:
0: getstatic #44 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #49 // String method
5: invokevirtual #46 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
Welche nur private Funktionen bedeutet, werden bei der Kompilierung ausgeschlossen.
Ich versuchte auch, die Klasse final
zu deklarieren, aber das Ergebnis war das gleiche.
Nicht eine genaue Betrogene, aber sehen Sie dies für viele sehr nützliche Informationen: http://StackOverflow.com/Questions/4912695/What-optimizations-Cani-Expect-From-Dalvik-and-the-android- toolchain –
@GrahamBorland Danke, ich warf einen Blick und konnte keine Informationen in der Frage oder Antwort darüber finden, ob nicht referenzierter Code enthalten ist oder nicht. –