我有一个问题,我有一些JAXB生成的java文件,其间有众所周知的"package-info.java",它只包含2行代码,一个注释和一个包定义:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://it.tms.project/input")
package it.tms.project.jaxb.input;
Run Code Online (Sandbox Code Playgroud)
现在,当编译此文件时会生成一个普通的.class文件,但是当我尝试对其进行模糊处理时,proguard不会将其添加到模糊的output.jar中,我想这是因为它不包含任何类或其他任何内容而没有其他java文件是指它.我已经尝试了一些proguard选项来摆脱这个问题,但没有一个是好的:
-keepparameternames
-keepattributes Exceptions,InnerClasses,Signature,SourceFile,EnclosingMethod
-keeppackagenames it.tms.project.jaxb.input
-dontshrink
-dontoptimize
-keepattributes *Annotation* (I thought this one would work but I was wrong)
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
Run Code Online (Sandbox Code Playgroud)
现在我只需要一些选项来明确告诉proguard不要混淆我想要的文件,但只是将它添加到output.jar中,我该怎么做?请记住,"keep class*{}"之类的选项不起作用,因为该文件不包含任何类.感谢任何人的回答,请写完FORZA NAPOLI的留言!
就 ProGuard 而言,编译后的类与其他类一样。默认情况下,ProGuard 会丢弃它,因为它没有被使用(除了自省)。您可以将其保存为:
-keep class it.tms.project.jaxb.input.package-info
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的,您可能也希望在此类上保留注释:
-keepattributes *Annotation*
Run Code Online (Sandbox Code Playgroud)