java - proguard 删除我用 keep 指定的内容

标签 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.**,
        ** { *; }

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

最佳答案

您的配置显式保留所有类、字段和方法,指定包中的除外。那应该就是你想要的。您可以使用以下命令检查配置的效果

-printseeds seeds.txt

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

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

关于java - proguard 删除我用 keep 指定的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193147/

相关文章:

java - Kafka - TimestampExtractor 的问题

java - Proguard 问题 : Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference

android - proguard-rules.pro 和 proguard.cfg 的区别

gradle - 什么是 .kotlin_builtins 文件,我可以从我的 uberjars 中省略它们吗?

java - iTextPDF - 无法在已插入 anchor 的表上使用 writeSelectedRows()

java - 从 kafka 中的轮询记录创建批处理

java - 在 Selenium 中选择下拉值的方法

java - 如果整行以引号 "开头,Univocity CSV 解析器会粘合整行

android - 任务 ':app:transformClassesAndResourcesWithProguardForRelease' Android 执行失败

android - 包含 .so 文件时减小 APK 的大小