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