ProGuard with JavaFX和JDOM2

时间:2017-06-03 23:00:23

标签: java proguard

我使用ProGuard GUI来混淆我的罐子,但我遇到了一些麻烦。关于我的jar的特别之处在于我使用库javafx和jdom2。

到目前为止我做了什么:

  • 添加了输入jar
  • 添加了输出jar
  • 添加了库r​​t.jar,jdom-2.0.6.jar,jfxrt.jar

我不知道如何填写此表单以使其正常工作。我尝试了几件事,但我不断得到不同的错误。

UI Obfuscation

你有经验吗?

1 个答案:

答案 0 :(得分:2)

如果您的代码在没有proguard的情况下正常工作,则必须在您的proguard offuscation列表中排除外部依赖关系。

在正常情况下,proguard会尝试去除所有。 尝试添加到您的proguard配置文件:

-dontoptimize

-libraryjars <java.home>/lib/rt.jar
-libraryjars <java.home>/lib/ext/jfxrt.jar
-libraryjars <java.home>/lib/jce.jar

# Save meta-data for stack traces
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

# Rename FXML files together with related views
-adaptresourcefilenames **.fxml,**.png,**.css
-adaptresourcefilecontents **.fxml
-adaptclassstrings

# Keep all annotations and meta-data
-keepattributes *Annotation*,Signature,EnclosingMethod

# Keep entry-point class
-keep class com.zenjava.test.javafx_and_proguard.MainApp {
    public static void main(java.lang.String[]);
}

# Keep all classes inside application
-keep,allowobfuscation class com.zenjava.test.javafx_and_proguard.** {
}

# Keep names of fields marked with @FXML attribute
-keepclassmembers class * {
    @javafx.fxml.FXML *;
}

代码来源:https://github.com/FibreFoX/javafx-gradle-plugin/blob/master/examples/javafx-proguard-gradle/proguard.conf