구축하고 ProGuard를 실행하지 않고 안드로이드에 실행 파일을 배포 참조되지 않은 방법은 최종 실행 파일에 포함되어 있습니까?참조되지 않은 메소드가 최종 실행 파일에 포함되어 있습니까?
도 포함 된 외부 라이브러리 항아리에서 참조되지 않은 방법이 있습니까?
는 자바 컴파일러에 의존이 문제인가, 또는 어떤 경우 덱스는 모든 트리밍을합니까?구축하고 ProGuard를 실행하지 않고 안드로이드에 실행 파일을 배포 참조되지 않은 방법은 최종 실행 파일에 포함되어 있습니까?참조되지 않은 메소드가 최종 실행 파일에 포함되어 있습니까?
도 포함 된 외부 라이브러리 항아리에서 참조되지 않은 방법이 있습니까?
는 자바 컴파일러에 의존이 문제인가, 또는 어떤 경우 덱스는 모든 트리밍을합니까?I 간단한 테스트 클래스 (모든 비 참조 방법이다) 다음 APK 컴파일
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");
}
}
I, Test.class
을 추출 (javap -c
로)를 디 컴파일. 나는 다음과 같은 결과를 얻었다. 또한 APK 대신 항아리로 테스트 한 결과는 정확히 같습니다. Java 1.6.0_29를 사용했습니다. 에만 개인 기능을 의미
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
는 컴파일시에 제외됩니다.
는 또한 클래스final
를 선언하려고했으나 결과는 동일했다.
하지 정확한 속는 사람,하지만 매우 유용한 정보를 많이이를 참조하십시오 http://stackoverflow.com/questions/4912695/what-optimizations-can-i-expect-from-dalvik-and-the-android- 툴체인 –
@GrahamBorland 덕분에, 나는보고를 가져다가 해당 정보를 찾거나 참조되지 않은 코드가 포함되어 있는지 여부에 대해 대답 할 수 없었다. –