【问题标题】:Why does minifyEnabled show most of my code?为什么 minifyEnabled 会显示我的大部分代码?
【发布时间】:2017-01-11 21:33:03
【问题描述】:

我的 ProGuard 中有这个类。

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

【问题讨论】:

  • 难道android:debuggable="true"是在你的manifest文件中设置的?
  • 您期待什么?据我所知,类代码仍然可以使用 proguard 访问。所做的是重命名所有变量/类/方法,并删除调试数据,因此人们无法调试您的代码。不过,代码就在那里。

标签: java android obfuscation minify android-proguard


【解决方案1】:

ProGuard 的混淆功能仅限于重命名类/方法/字段名称。如果您需要更复杂的混淆(实际代码/指令的混淆),您应该查看DexGuard,ProGuard 的商业变体。

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 2021-11-14
    • 1970-01-01
    • 2013-12-03
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多