2013-12-07 22 views
5

我正在開發一個使用IntelliJ IDEA作爲IDE的JavaFX應用程序。如何在我的JavaFX的IntelliJ工件中集成Proguard模糊處理?

到目前爲止,一切順利,我已經配置了我的所有外部庫和我的JavaFX神器被正確創建。現在

我想(使用ProGuard)創建神器時整合混淆。

的IntelliJ有一個「預處理」和「後處理」選項中神器的屬性,我可以定義一個Ant任務要拼命地跑。

但我不知道如何創建任務,並告訴編譯器我迷惑選項。

非常感謝您事先的任何線索,

問候

回答

9

有3層基本的方法你做到這一點:

  1. 創建一個正常的proguard.cfg文件,並引用它從螞蟻
  2. 把你的proguard設置直接放在螞蟻裏面,使用XML符號
  3. 把你的proguard設置直接放在ant內使用proguard.c FG格式

下面是使用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一旦你已經擺脫了。

+0

非常感謝。 這解決了我的問題,現在一切都被混淆了! –

0

只是一些補充信息,關於在想法的「後處理」中運行Ant任務。

確保你有'默認'的目標。否則任務不會執行。 build.xml示例:

<?xml version="1.0"?> 
<project name="ant_task" default="obfuscate" basedir="."> 
    <target name="obfuscate"> 
     <taskdef resource="proguard/ant/task.properties" 
      classpath="/opt/proguard5.2.1/lib/proguard.jar" /> 
     <proguard configuration="proguard.cfg"/> 
    </target> 
</project>