有 3 种基本方法可以做到这一点:
- 创建一个普通的 proguard.cfg 文件,并从 ant 引用它
- 使用 XML 表示法将您的 proguard 设置直接放入 ant 中
- 使用 proguard.cfg 格式将您的 proguard 设置直接放入 ant 中
下面是使用 Proguard 和 Ant 以及第三种方法的基本示例: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 网站有很多信息,但可能很难理解。
老实说,网络上有很多示例可以向您展示如何执行此操作。只需谷歌 javafx proguard,您可能会找到一些很好的完整示例。
编辑:至于 IntelliJ 如何将信息传递给 Ant.. 我不知道。它可能会传递一些变量,您可以像普通 Ant 一样正确引用这些变量。如果您在网上找不到,我确信 JetBrains 网站上有相关信息。
如果是我,我只需创建一个 ant 脚本来编译我的应用程序而不进行混淆,然后在解决问题后添加 proguard。