我正在使用 IntelliJ IDEA 作为 IDE 开发 JavaFX 应用程序。
到目前为止,一切运行顺利,我配置了所有外部库,并正确创建了我的 JavaFX 工件。
现在我想在创建工件时集成混淆(使用 Proguard)。
IntelliJ 在工件的属性中有一个“预处理”和“后处理”选项,我可以在其中定义要运行的 Ant 任务。
但我不知道如何创建该任务并告诉编译器我的混淆选项。
非常感谢您提供任何线索,
此致
最佳答案
有3种基本方法可以做到:
这是将 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 文件的重命名类似于它们各自的 Controller 文件:
-adaptresourcefilecontents **.fxml
任何用@FXML 注释的东西都是通过反射访问的,所以不要混淆它们:
-keepclassmembernames class * {
@javafx.fxml.FXML *;
}
Proguard 网站有很多信息,但可能很难理解。
老实说,网络上有很多示例可以向您展示如何执行此操作。只需谷歌 javafx proguard,您可能会找到一些很好的完整示例。
编辑:至于 IntelliJ 如何将信息传递给 Ant ......我不知道。它可能传递了一些变量,您可以像正常的 Ant 属性一样引用它们。如果您在网上找不到,我确信 JetBrains 网站在他们的网站上有相关信息。
如果是我,我会创建一个 ant 脚本来编译我的应用程序,而不会混淆,然后在你把它平方后添加 proguard。
关于intellij-idea - 如何在我的 JavaFX 的 IntelliJ 工件中集成 Proguard 混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445960/