With ProGuard, how do I obfuscate just one class?

我的梦境 提交于 2019-12-03 08:40:08

问题


What would be a smart ProGuard configuration to obfuscate just the private methods and constants of one particular class com.acme.Algorithm?

I would like to obfuscate just that, because it contains an algorithm that should not be plain obvious when accidentally opening the .jar.

I'm a ProGuard newbie. AFAIU, you have to use "keep", but the positive logic of "do obfuscate" is not available, right? So how to exlude my class from a "keep everything" config? Note: I don't want to obfuscate other classes for the moment, because I want to allow the customer to see meaningful stacktraces.


回答1:


Obfuscating a single class won't have much effect: it may change the class name and a few field names and methods names, and it may optimize some code. Obfuscation tends to be less effective for hiding small pieces of information. The more application code you obfuscate, the more difficult it becomes to understand.

That being said, you can specify:

-keep class !com.acme.Algorithm { *; }

It keeps all classes/fields/methods outside of com.acme.Algorithm.



来源:https://stackoverflow.com/questions/17880565/with-proguard-how-do-i-obfuscate-just-one-class

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!