2016-09-04 2 views
1

나는이 클래스를 내 ProGuard에 가지고 있습니다. 나는 AAR을 볼 때왜 minifyEnabled가 내 코드 대부분을 보여 줍니까?

-keep,allowshrinking class com.MyClass { 
    public <methods>; 
    protected <methods>; 
    public static <methods>; 
    public <init>(...); 
} 

그것은 다음과 같이 표시됩니다 : 나는 private a b = new b();에 가서 Crtl + b을 할 경우

public class MyClass implements a { 
    private static final MyClass a = new MyClass(); 
    private a b = new b(); 

    private MyClass() { 
    } 

    public static MyClass getInstance() { 
     return a; 
    } 

    public void doSomething(int var1, int var2) { 
     this.b.doSomething(var1, var2); 
    } 
} 

나는 클래스 b의 코드를 읽을 수 있어요. 그 코드를 난독 화해서는 안됩니까? 그것을 난독 화되도록하려면 어떻게해야합니까?

이것은 내부 클래스 b을 보여 주며, 난독 화되어야합니다.

class b implements a { 
    b() { 
    } 

    public void doSomething(int var1, int var2) { 
     int var3 = var1 + var2; 
    } 
} 
+0

매니페스트 파일에'android : debuggable = "true"'가 설정되어있을 수 있습니까? – qantik

+0

무엇을 기대 했습니까? 내가 아는 한 클래스 코드는 여전히 프로 가드를 사용하여 액세스 할 수 있습니다. 무엇이 모든 변수/클래스/메소드의 이름을 변경하고 디버그 데이터를 제거하므로 사람들이 코드를 디버깅 할 수 없습니다. 여전히 코드가 있습니다. – Lxu

답변

0

ProGuard의 난독 화 기능은 클래스/메소드/필드 이름의 이름 바꾸기로 제한됩니다. 보다 복잡한 난독 화 (실제 코드/지침의 난독 화)가 필요하면 ProGuard의 상용 변형 인 DexGuard을 살펴 봐야합니다.

관련 문제