Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何混淆外部GWT开发的Java源代码?_Java_Gwt_Obfuscation - Fatal编程技术网

如何混淆外部GWT开发的Java源代码?

如何混淆外部GWT开发的Java源代码?,java,gwt,obfuscation,Java,Gwt,Obfuscation,大多数混淆都集中在字节码上。我还必须提供源代码,因为外部开发人员将使用GWT编译器来运行它。在发布源代码之前,我需要稍微清理一下: 混淆方法变量名 模糊私有方法参数名称 删除除每个文件顶部的许可证之外的所有非Javadoc注释 删除最终类的私有方法或受保护方法上的所有Javadoc注释 删除某些Javadoc标记,如@author 删除某些其他注释标记,如TODO、FIXME等 删除对私有类的所有@see引用 删除所有空白 除上述注释和所有Javadoc之外,我还可以删除所有注释和Javad

大多数混淆都集中在字节码上。我还必须提供源代码,因为外部开发人员将使用GWT编译器来运行它。在发布源代码之前,我需要稍微清理一下:

  • 混淆方法变量名
  • 模糊私有方法参数名称
  • 删除除每个文件顶部的许可证之外的所有非Javadoc注释
  • 删除最终类的私有方法或受保护方法上的所有Javadoc注释
  • 删除某些Javadoc标记,如@author
  • 删除某些其他注释标记,如TODO、FIXME等
  • 删除对私有类的所有@see引用
  • 删除所有空白
除上述注释和所有Javadoc之外,我还可以删除所有注释和Javadoc(每个文件的顶部仍然需要许可证),并单独生成Javadoc

我还没有找到一种方法,可以确保在多个平台上执行的gradle构建脚本能够很好地工作。一些非常古老且不再维护的解决方案可能会在Java增强方面遇到问题,如diamond操作符和lambdas

对于我如何做到这一点,有什么建议吗


注意,这里有许多类似的问题没有回答。其中一个:

今天似乎没有任何可用的:

  • 很少有工具可以从Java源代码模糊处理开始
  • 其中一些不是免费的,或者不是基于Java的
  • 保留的源代码(格式化)工具没有足够的可定制性来删除所有注释,但保留了GWT“JSNI”代码(GWT将JavaScript代码嵌入Java的方式是在“本机”方法的特殊/*-{…}-*/样式注释中)

  • 最后,我自己编写了一段简单的代码,只删除了所有的空白,但保留了JSNI代码。它不会混淆方法变量或其他任何东西,但现在必须这样做。

    我对这个字段不太了解,所以我无法提供真实的答案。但是,如果您只是提供了一个库或其他东西,为什么不能呢您自己将GWT编译成JavaScript,然后混淆/最小化该JavaScript并分发它?有没有办法为GWT开发的Java端提供
    .class
    文件,并让您的用户告诉GWT编译器忽略这些类,并假设它们将在JavaScript端外部提供?GWT编译器使用这两种方法*.java和*.class生成JavaScript。一旦完成,就完成了。我无法将单独构建的JavaScript位链接在一起(这实际上是我所需要的),所以我不得不这样做。