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