如何将 Proguard 混淆集成到我的 JavaFX 的 IntelliJ 工件中?

2023-11-24

我正在使用 IntelliJ IDEA 作为 IDE 开发 JavaFX 应用程序。

到目前为止,一切都运行顺利,我已经配置了所有外部库并且正确创建了我的 JavaFX 工件。

现在我想在创建工件时集成混淆(使用 Proguard)。

IntelliJ 在工件的属性中有一个“预处理”和“后处理”选项,我可以在其中定义要运行的 Ant 任务。

但我不知道如何创建该任务并告诉编译器我的混淆选项。

提前非常感谢您提供任何线索,

此致


有 3 种基本方法可以做到这一点:

  1. 创建一个普通的 proguard.cfg 文件,并从 ant 引用它
  2. 使用 XML 表示法将您的 proguard 设置直接放入 ant 中
  3. 使用 proguard.cfg 格式将您的 proguard 设置直接放入 ant 中

下面是使用 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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Proguard 混淆集成到我的 JavaFX 的 IntelliJ 工件中? 的相关文章

随机推荐

  • PHP中的内存映射文件,php://temp 和 php://memory 有什么区别

    我需要一种在 PHP 中非常简单地在内存中存储文件的方法 该文件正在构建 然后立即发送到另一个 Web 服务 我看到从 PHP 5 1 开始php temp and php memory流是可用的 但两者之间似乎没有太大区别 php tem
  • Panda read_csv 中的编码错误[重复]

    这个问题在这里已经有答案了 我正在尝试将 CSV 文件读入 Pandas 中的 Dataframe 中 当我尝试这样做时 出现以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 55 中的字节 0x96 无效的
  • 了解 Scala 中的“推断类型参数不符合类型参数边界”错误

    我无法理解为什么我收到 推断的类型参数不符合类型参数界限 首先 我定义了一个名为 CS 的特征 它可以由多个类 例如 CS01 和 CS02 实现 trait CS T lt CS T this T gt def add T def rem
  • 使用 IJava 的 Google Colab 笔记本在安装 + 刷新后卡在“正在连接”

    在初始 IJava 安装和浏览器页面刷新后 我的所有笔记本都停止连接 以前做什么工作 执行第一个单元格 wget https github com SpencerPark IJava releases download v1 3 0 ija
  • 有没有办法在更改横向方向后转换坐标系?

    在基于视图的 iPhone OS 应用程序中 我将方向从初始纵向更改为纵向横向 UIInterfaceOrientationLandscapeRight 但现在 x y 原点 0 0 位于左下角角 而不是通常的左上角 每次我想做一些涉及坐标
  • 是否有希望将ForeignPtr转换为ByteArray#(对于函数::ByteString -> Vector)

    出于性能原因 我想要一个零拷贝的转换ByteString 目前严格 Vector 自从Vector只是一个ByteArray 在引擎盖下 以及ByteString is a ForeignPtr这可能看起来像 caseBStoVector
  • 将多边形坐标从 Double 转换为 Long 以与 Clipper 库一起使用

    我有两个多边形 它们的顶点存储为双坐标 我想找到这些多边形的相交区域 所以我正在查看快船库 C 版本 问题是 Clipper 只适用于整数数学 它使用 Long 类型 有没有一种方法可以安全地使用相同的比例因子变换我的两个多边形 将它们的坐
  • Java 的 Groovy 超集 [重复]

    这个问题在这里已经有答案了 Groovy 是 Java 的超集吗 如果不是 Groovy 和 Java 之间有哪些不兼容之处 我所说的超集是指源代码向后兼容性 即 您可以获取一个 Java 文件并将其编译为 Groovy 源文件 并且它会像
  • 如何使 相同的高度

    我试图将一个元素放在一个元素的左侧 但是我似乎无法使它们具有相同的高度并彼此对齐 跨度似乎总是定位得稍高一些 有人有什么想法吗 闪闪发光 编辑 HTML 部分
  • 未找到 Gradle DSL 方法:“multiDexEnabled()”

    我遵循了 multidex 指南https developer android com tools building multidex html 但我收到这个错误未找到 Gradle DSL 方法 multiDexEnabled 我更新了
  • Response.WriteFile -- 写出字节流

    是否可以使用 Response Write WriteFile 从动态创建的位图写入 http 响应流 而不将图像保存到硬盘驱动器 您可以使用MemoryStream并将其分配给Response OutputStream 或者简单地使用Re
  • 如何通过.properties文件使@RequestParam可配置?

    我们如何通过 properties 文件进行以下配置 RequestParam value page required false defaultValue 0 Integer page RequestParam value size re
  • F#:如何使用 SQL 数据源创建 Deedle Frame

    我试图找出当数据来自 SQL 服务器时 在 F 中创建 Deedle 框架的最佳方法是什么 我尝试过类似以下的事情 I packages Deedle 0 9 12 load Deedle fsx r System dll r System
  • C# 注册表 SetValue 抛出 UnauthorizedAccessException

    在你尝试用 快速谷歌搜索 来回答这个问题之前 我想指出的是我已经这样做了 这是情况 我有以下方法尝试修改注册表项值 我遇到的问题是 执行时 它会抛出 UnauthorizedAccessException即使我已经将密钥打开为可写 我以管理
  • spring javaconfig、xml配置和注解之间的性能差异

    我们的 Spring 配置包含大约 1200 个 bean 并且我们使用 component scan Autowired 如果我们将 ApplicationContext 导出为 Xml 并且仍然使用 Autowired 我们可以节省大约
  • 带有 Bower 支持的 Webpack

    我想加载最好的节点包 并且仅当不存在时才加载 Bower 包 我只会按照 Webpack 站点中的建议使用节点包 但我需要加载一个位于 Bower 中的库 https github com Stamplay stamplay js sdk和
  • 计算经纬度坐标的中点

    有谁知道获得一对纬度和经度点的中点的最佳方法 我使用 d3 js 在地图上绘制点 需要在两点之间绘制一条曲线 因此我需要创建一个中点来在线条中绘制曲线 请参阅下图以更好地理解我正在尝试做的事情 对长脚本表示歉意 画东西看起来很有趣 我已经划
  • 在 GitHub 上指定备用项目级 README.md

    使用 GitHub 的基于 Web 的界面 我无法弄清楚如何为项目的 README 文件指定备用路径 文件名 创建新的自述文件时 Web 界面确实提供了使用我想要的任意路径或文件名的选项 但我选择的文件不会用作项目级自述文件 我希望当用户访
  • 获得 (omniauth-facebook) 和 (omniauth-twitter) 工作

    我在用着 Ruby on Rails 4 设计3 0 3 全方位认证 1 1 4 omn iauth facebook 1 4 1 omn iauth twitter 1 0 0 我最近设置了我的omniauth facebook一切正常
  • 如何将 Proguard 混淆集成到我的 JavaFX 的 IntelliJ 工件中?

    我正在使用 IntelliJ IDEA 作为 IDE 开发 JavaFX 应用程序 到目前为止 一切都运行顺利 我已经配置了所有外部库并且正确创建了我的 JavaFX 工件 现在我想在创建工件时集成混淆 使用 Proguard Intell