我如何混淆 Java 外部 GWT 开发的源代码?
How can I obfuscate Java source code for external GWT development?
大多数混淆都集中在字节码上。我也必须提供源代码,因为这是外部开发人员使用的 GWT 编译器需要 运行。在发布源代码之前,我需要稍微清理一下:
- 混淆方法变量名
- 混淆私有方法参数名称
- 删除所有非Java文档注释,每个文件顶部的许可证除外。
- 删除所有 Javadoc 对 final 类 的私有方法或受保护方法的评论 类。
- 删除某些 Javadoc 标签,例如 @author
- 删除某些其他注释标签,例如 TODO、FIXME 等
- 删除所有@see 对私有 类
的引用
- 删除所有空格
除上述所有评论和所有 Javadoc 外,还可以删除(每个文件顶部仍需要许可证),我将单独生成 Javadoc。
我还没有找到一种可以确保在多个平台上执行的 gradle 构建脚本中可以很好地工作的方法。一些非常古老且不再维护的解决方案可能无法使用 Java 增强功能,例如菱形运算符和 lambda。
是否有任何关于如何执行此操作的建议?
请注意,这里还有很多类似的问题没有得到解答。其中之一:GWT Java Obfuscation
今天似乎没有可用的内容:
- 开始时用于Java 源代码混淆的工具很少。
- 其中一些不是免费的,就是不是 Java 基于的。
- 保留的源代码(格式化)工具的自定义程度不足以删除所有注释,而是将 GWT "JSNI" 代码保留在(GWT 将 Java 脚本代码嵌入 [=24= 的方式] 在 "native" 方法的特殊 /*-{ ... }-*/ 样式注释中。
最后,我自己写了一段简单的代码,它只去掉了所有的空格,但保留了 JSNI 代码并且保持不变。它不会混淆方法变量或其他任何东西,但现在必须这样做。
大多数混淆都集中在字节码上。我也必须提供源代码,因为这是外部开发人员使用的 GWT 编译器需要 运行。在发布源代码之前,我需要稍微清理一下:
- 混淆方法变量名
- 混淆私有方法参数名称
- 删除所有非Java文档注释,每个文件顶部的许可证除外。
- 删除所有 Javadoc 对 final 类 的私有方法或受保护方法的评论 类。
- 删除某些 Javadoc 标签,例如 @author
- 删除某些其他注释标签,例如 TODO、FIXME 等
- 删除所有@see 对私有 类 的引用
- 删除所有空格
除上述所有评论和所有 Javadoc 外,还可以删除(每个文件顶部仍需要许可证),我将单独生成 Javadoc。
我还没有找到一种可以确保在多个平台上执行的 gradle 构建脚本中可以很好地工作的方法。一些非常古老且不再维护的解决方案可能无法使用 Java 增强功能,例如菱形运算符和 lambda。
是否有任何关于如何执行此操作的建议?
请注意,这里还有很多类似的问题没有得到解答。其中之一:GWT Java Obfuscation
今天似乎没有可用的内容:
- 开始时用于Java 源代码混淆的工具很少。
- 其中一些不是免费的,就是不是 Java 基于的。
- 保留的源代码(格式化)工具的自定义程度不足以删除所有注释,而是将 GWT "JSNI" 代码保留在(GWT 将 Java 脚本代码嵌入 [=24= 的方式] 在 "native" 方法的特殊 /*-{ ... }-*/ 样式注释中。
最后,我自己写了一段简单的代码,它只去掉了所有的空格,但保留了 JSNI 代码并且保持不变。它不会混淆方法变量或其他任何东西,但现在必须这样做。