【问题标题】:ProGuard with JavaFX and JDOM2带有 JavaFX 和 JDOM2 的 ProGuard
【发布时间】:2017-11-05 01:35:56
【问题描述】:

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

到目前为止我做了什么:

  • 添加了输入jar
  • 添加了输出jar
  • 添加库 rt.jar、jdom-2.0.6.jar、jfxrt.jar

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

你有这方面的经验吗?

【问题讨论】:

  • “你有这方面的经验吗?”不是一个真正的问题,“我不断收到不同的错误”不是一个真正的问题描述。请参阅how to ask
  • 你的代码在没有 proguard 的情况下工作吗?
  • 您使用哪些构建框架来构建您的项目? Maven 还是 Gradle?

标签: java proguard


【解决方案1】:

如果你的代码在没有 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

【讨论】:

  • 作为一个极客,会建议您编辑您的 proguard 配置文件以便对其进行编辑。这个编辑器对复制/粘贴不太友好....
  • 我的意思是顶部使用的编辑器不利于编辑您的文件。手动操作更好、更安全。
  • @jeorfvre 感谢帮助我。实际上我不知道如何手动操作,所以我想使用 GUI。在您编写的解决方案中,我找不到 JDOM2 的提示。
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 2019-07-20
  • 2014-02-02
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多