ProGuard - 如何保留方法并同时对它们进行模糊处理?

时间:2012-11-03 08:32:17

标签: java android obfuscation proguard

我正在尝试手动模糊我的Android应用程序(是的,我知道,这很痛苦)为此我需要保留我实现的所有方法,同时也使用ProGuard对它们进行模糊处理。

我尝试过更改配置:

-keep class com.project.x.* {

}

但它保留了所有的类名和方法名,仍然删除了我未使用的代码。

我该怎么做才能解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分:14)

正如CommonsWare所解释的那样,您似乎不太可能希望保留未使用的方法,但是它们的名称会被混淆,但ProGuard支持如下:

-keepclassmembers,allowobfuscation class com.project.x.** {
    <methods>;
}

这强制保留指定包(及其子包)中的所有方法(但不是所有类),但仍允许对其名称进行模糊处理。

答案 1 :(得分:1)

使用保留选项修饰符 - 请参阅here

我认为你会做这样的事情:

-keep,allowoptimization class com.project.x.* {

}

但要引用文档:“此修饰符仅对实现不寻常的要求有用。”

您是否尝试过逆转工程师,以确定这是您需要做的事情?我对keep的印象是它会将类保留为应用程序的入口点,但它不会阻止它在内部优化和混淆这些类的方法。

也许你想要的只是-keepnames看到上面的链接了解详情。