有三种基本方法可以实现:
- 创建一个普通的proguard.cfg文件,并从ant引用它
- 使用XML符号直接将您的proguard设置放在ant中
- 使用proguard.cfg格式直接将您的proguard设置放在ant中
这是使用第3种方法使用Ant和Proguard的基本示例:http://www.reviewmylife.co.uk/blog/2007/10/20/proguard-eclipse-ant-buildxml/
记住Proguard的重要一点是,您想混淆的所有内容都必须位于JAR文件内,并且您需要显式地告诉它不要混淆某些内容(例如程序入口点、通过反射访问的内容等)。
JavaFX会创建一个用作入口点的文件,您需要防止混淆此文件:
-keepclasseswithmembers public class com.javafx.main.Main {
public *; public static *;
}
请确保包含Java / JavaFX库。
-libraryjars "${java.home}/lib/rt.jar"
-libraryjars "${java.home}/lib/ant-javafx.jar"
-libraryjars "${java.home}/lib/jfxrt.jar"
如果您正在使用FXML文件,则需要确保您的FXML文件与其相应的控制器文件命名方式类似:
-adaptresourcefilecontents **.fxml
任何使用 @FXML 注释的内容都是通过反射访问的,因此不要对它们进行混淆:
-keepclassmembernames class * {
@javafx.fxml.FXML *;
}
Proguard网站提供了大量信息,但理解起来可能会比较困难。
实际上,网络上有很多示例可以帮助你完成这个任务。只需在Google搜索javafx proguard,你可能会找到一些完整的好例子。
编辑:至于IntelliJ如何将信息传递给Ant...我不知道。它可能会传递一些变量,你可以像正常的Ant属性那样引用它们。如果在网络上找不到信息,我相信JetBrains网站上肯定有相关信息。
如果是我,我会先创建一个Ant脚本编译我的应用程序而不进行混淆,然后再加入Proguard。