我正在使用IntelliJ IDEA作为IDE开发JavaFX应用程序。
到目前为止,一切运行顺利,我配置了所有外部库,并正确创建了我的JavaFX工件。
现在我想在创建工件时集成模糊处理(使用Proguard)。
IntelliJ在工件属性中有一个“预处理”和“后处理”选项,我可以在其中定义要运行的Ant任务。
但我不知道如何创建该任务并告诉编译器我的混淆选项。
非常感谢您提供任何线索,
祝你好运
答案 0 :(得分:10)
有三种基本方法:
这是使用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网站在网站上有相关信息,如果你在网上找不到的话。
如果是我,我只是创建一个蚂蚁脚本来编译我的应用程序而不进行混淆,然后在你已经平方之后添加proguard。
答案 1 :(得分:0)
关于在想法的“后处理”中运行Ant任务的一些补充信息。
确保您拥有'默认'目标。否则任务不会执行。 build.xml示例:
This is the derived class.
This is the derived class.