我正在尝试手动模糊我的Android应用程序(是的,我知道,这很痛苦)为此我需要保留我实现的所有方法,同时也使用ProGuard对它们进行模糊处理。
我尝试过更改配置:
-keep class com.project.x.* {
}
但它保留了所有的类名和方法名,仍然删除了我未使用的代码。
我该怎么做才能解决这个问题?
提前致谢!
答案 0 :(得分:14)
正如CommonsWare所解释的那样,您似乎不太可能希望保留未使用的方法,但是它们的名称会被混淆,但ProGuard支持如下:
-keepclassmembers,allowobfuscation class com.project.x.** {
<methods>;
}
这强制保留指定包(及其子包)中的所有方法(但不是所有类),但仍允许对其名称进行模糊处理。
答案 1 :(得分:1)
使用保留选项修饰符 - 请参阅here
我认为你会做这样的事情:
-keep,allowoptimization class com.project.x.* {
}
但要引用文档:“此修饰符仅对实现不寻常的要求有用。”
您是否尝试过逆转工程师,以确定这是您需要做的事情?我对keep的印象是它会将类保留为应用程序的入口点,但它不会阻止它在内部优化和混淆这些类的方法。
也许你想要的只是-keepnames
看到上面的链接了解详情。