2016-09-04 7 views
1

У меня этот класс в моем ProGuard.Почему minifyEnabled показывает большую часть моего кода?

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

Когда я смотрю на AAR это показывает, как это:

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); 
    } 
} 

Если я иду в private a b = new b(); и делать Crtl + b я могу прочитать код класса b. Должен ли этот код быть запутанным? Как заставить его быть запутанным?

Это то, что показывает внутри класса b, который должен быть запутан.

class b implements a { 
    b() { 
    } 

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

Может быть, что 'android: debuggable =" true "' установлен в вашем файле манифеста? – qantik

+0

что вы ожидали? Насколько мне известно, код класса по-прежнему доступен с помощью proguard. Что такое переименование всех переменных/классов/методов и удаление данных отладки, поэтому люди не могут отлаживать ваш код. Тем не менее, код есть. – Lxu

ответ

0

Возможности обфускации ProGuard ограничиваются переименованием названий классов/методов/полей. Если вам нужна более сложная обфускация (обфускация фактического кода/инструкций), вы должны взглянуть на DexGuard, коммерческий вариант ProGuard.