8

我正在尝试手动混淆我的 Android 应用程序(是的,我知道,这很痛苦),为此我需要保留我实现的所有方法,同时还要使用 ProGuard 混淆它们。

我尝试过像这样更改配置:

-keep class com.project.x.* {

}

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

我能做些什么来解决这个问题?

提前致谢!

4

2 回答 2

19

正如 CommonsWare 所解释的,您似乎不太可能希望保留未使用的方法但又将其名称混淆,但 ProGuard 支持如下:

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

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

于 2012-11-07T14:23:12.177 回答
1

使用保持选项修饰符 - 见这里

我想你会做这样的事情:

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

}

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

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

也许您想要的只是-keepnames查看上面的链接以获取详细信息。

于 2012-11-03T08:59:50.620 回答