2016-09-04 37 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的混淆功能僅限於重命名類/方法/字段名稱。如果您需要更復雜的混淆(混淆實際代碼/指令),您應該查看ProGuard的商業版本DexGuard

相關問題