Proguard保留某些注释和访问修饰符

时间:2018-08-18 17:56:26

标签: java kotlin annotations proguard access

当尝试使用proguard混淆我的代码时,我遇到了问题。 第一个问题是我想删除一些注释,但不是全部。正是kotlin的元数据注释。如果我从-keepattributes中删除 Annotation ,即使我尝试保留某些注释,它也会删除所有注释。我试图用thisthis排除一些注释,但是没有用。

我也尝试过:

-keepclassmembers class * { @Annotation public *; }

-keep @Annotation public class *

第二个问题是我想让一些构造函数公开。如果我保留构造函数,则它将保持公开状态,但不会同时重命名包和类,而这并不是我想要的。我唯一需要做的就是让构造者保持公开状态。我还删除了-allowaccessmodification,但结果仍然相同。

我的proguard插件配置:

<configuration>
                <obfuscate>true</obfuscate>
                <attach>true</attach>
                <appendClassifier>false</appendClassifier>
                <injar>${project.build.finalName}.jar</injar>
                <outjar>${project.build.finalName}-OBFUSCATED.jar</outjar>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                    <lib>${java.home}/lib/jce.jar</lib>
                    <lib>${java.home}/lib/ext/sunjce_provider.jar</lib>
                </libs>
                <options>
                    <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option>
                    <option>-keep class gac.GTAnticheat</option>
                    <option>-dontshrink</option>
                </options>
                <exclusions>
                    <exclusion>
                        <groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
                    </exclusion>
                </exclusions>
            </configuration>

0 个答案:

没有答案