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

MrB*_*yte 6 java obfuscation android proguard

我试图手动混淆我的Android应用程序(是的,我知道,这是一个痛苦)和我必须保持我还没有实现也同时使用ProGuard混淆他们的所有方法.

我试过像这样更改配置:

-keep class com.project.x.* {

}
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢!

Eri*_*une 14

作为CommonsWare解释,似乎不太可能,你想保留未使用的方法,但他们的名字混淆,但ProGuard的支持,如下所示:

-keepclassmembers,allowobfuscation class com.project.x.** {
    <methods>;
}
Run Code Online (Sandbox Code Playgroud)

这种强行保持在指定的包(及其子包)的所有方法(但并非所有的类),但仍允许被扰乱他们的名字.


wes*_*ton 1

使用 keep 选项修饰符 - 请参阅此处

我想你会做这样的事情:

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

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