如何仅混淆 com.foo.* 和 com.bar.* (ProGuard)?

Posted

技术标签:

【中文标题】如何仅混淆 com.foo.* 和 com.bar.* (ProGuard)?【英文标题】:How can I obfuscate only com.foo.* and com.bar.* (ProGuard)? 【发布时间】:2011-05-30 23:28:09 【问题描述】:

我只想混淆一些包:

com.foo.*
com.bar.*

我试过了

-keepclasseswithmembers class **, !com.foo.**, !com.bar.**  *; 

-keepclasseswithmembers class !com.foo.**  *; 
-keepclasseswithmembers class !com.bar.**  *; 

在这两种情况下,来自 com.foo.* 和 com.bar.* 的类都没有被混淆了。

【问题讨论】:

【参考方案1】:

这应该可行

-keep class !com.foo.**,!com.bar.**  *; 

您可以在以下位置找到各种 -keep 选项的摘要 https://www.guardsquare.com/manual/configuration/usage#keepoptions

您可以在以下位置找到 ProGuard 正则表达式的解释 https://www.guardsquare.com/manual/configuration/usage#filters

【讨论】:

在我的 android 项目中,这行代码什么都不做。什么可以阻止它? @rekire 也许你还没有在 build.gradle 中设置“minifyEnabled true”? 在 Android 中,这对我有用 -keep class !com.foo.**,!com.bar.**, ** *; 。需要添加你想要保留的模式** - 意味着一切

以上是关于如何仅混淆 com.foo.* 和 com.bar.* (ProGuard)?的主要内容,如果未能解决你的问题,请参考以下文章

使用查询参数和 URL 中的 ~ 进行 301 重定向

如何阻止proguard混淆整个包?

301 不带 www 的重定向域有效,但带 www 无效

如何仅重定向子目录而不重定向内容?

如何仅混淆少数类或单个包?

Amazon Elastic beanstalk:使用 nginx/apache 将子域转发到子文件夹