proguard删除我用keep指定的东西

时间:2014-08-07 22:14:13

标签: java proguard

我正在尝试将proguard配置为仅缩小我的jar并且仅删除包com.faster.xml **,com.amazonaws.javax。,com.amazonaws.org.apache中的字段。 ,org.apache.commons。和org.joda。。为此,我在我的proguard配置中使用了以下内容:

-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers

-dontobfuscate
-dontoptimize
-dontpreverify
-keepattributes

-keep enum ** { *; }
-keep class !com.fasterxml.**, !com.amazonaws.javax.**,
        !com.amazonaws.org.apache.**, !org.apache.commons.**, !org.joda.**,
        ** { *; }

但是,我注意到指定的命名空间中的内容仍然被删除。罐子似乎仍在工作,但我只想了解它正在做什么。

1 个答案:

答案 0 :(得分:1)

您的配置显式保留除指定包中的类,字段和方法之外的所有类,字段和方法。这应该是你想要的。您可以使用

检查配置的效果
-printseeds seeds.txt

生成的文件包含显式保留的类,字段和方法的列表。

如果某些类似乎消失了,您应该仔细检查输入目录或输入jar。您还可以检查配置中的-injars-outjars选项是否包含过滤器。