sbt-proguard with play 2.2.3

时间:2014-07-10 07:06:51

标签: playframework sbt proguard playframework-2.2

我们开发了一个带有游戏2.2.3的Web应用程序,并希望对其进行模糊处理。我正在尝试使用sbt-proguard插件。我将下面的行放在 PROJECT_FOLDER / project / plugins.sbt 文件

addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")

并将以下行添加到 PROJECT_FOLDER / build.sbt 文件

proguardSettings

ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings")

ProguardKeys.options in Proguard += ProguardOptions.keepMain("Application")

inConfig(Proguard)(javaOptions in ProguardKeys.proguard := Seq("-Xmx2g"))

当我在播放控制台上说 dist 时,我不确定proguard是否正常工作,并且在插件网站上他们称之为 proguard:proguard 。当我在播放控制台上写 proguard:proguard 时,Play会给出错误,如下所示

[info] Reading program jar [/Users/kamil/DEVELOPMENT/play-2.2.3/repository/local/net.sf.ehcache/ehcache-core/2.6.6/jars/ehcache-core.jar] (filtered)
[info] Reading program jar [/Users/kamil/DEVELOPMENT/play-2.2.3/repository/cache/org.json/json/jars/json-20140107.jar] (filtered)
[info] Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/jce.jar]
[info] Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/rt.jar]
[error] Error: The output jar is empty. Did you specify the proper '-keep' options?
[trace] Stack trace suppressed: run last proguard:proguard for the full output.
[error] (proguard:proguard) Proguard failed with exit code [1]
[error] Total time: 35 s, completed 10.Tem.2014 09:45:23

是否有人成功使用此插件和播放框架?

1 个答案:

答案 0 :(得分:0)

在尝试正确配置sbt-proguard几天后,我放弃了,并在构建项目后使用了proguard。

我没有将混淆作为构建部分包括在内,而是打开了由class Individual: def __init__(self, visited): self.visited = visited # type: list[tuple] def add_visit(self, node): self.visited.append(node) individuals = [ Individual([(1, 3), (4, 5), (8, 9)]), Individual([(4, 3), (2, 5)]) ] for individual in individuals: pass # do stuff 生成的zip文件,对jar进行了模糊处理并将其返回到具有相同名称的lib文件夹中。以下是如何做到这一点:

Proguard可以独立运行。您只需从sourceforge下载tar文件,然后使用配置文件运行jar:

activator dist

现在,对于配置文件,您需要指定:

  1. injar - 罐子被混淆 -
    解压缩dist创建的zip文件后,cd进入lib文件,发现jar名称为YOUR_PROJECT.VERSION-sans-externalized.jar,这是你需要混淆的jar。
  2. outjar - 混淆jar(输出)的路径。在该过程结束时,只需将此jar复制回lib目录并将其重命名为jar中的名称。

  3. keep - 任何需要保留其名称的包名,类,方法或字段。您应该在webapp中保留的常见内容:

    3.1。控制器方法名称。

    3.2。 play.conf使用并在application.conf中指定的任何类,如ErrorHandler,ApplicationLoader

    3.3。所有路由器生成的类

  4. 库 - 包括lib文件中除自己的jar之外的所有库。

  5. 所以你的conf.pro文件应该是这样的:

    java -jar /path/to/proguard/lib/proguard.jar @CONF_FILE
    

    在混淆完成后你将输出jar复制回旧的目录和名称,你可以压缩你的项目并且你有一个混淆的游戏项目!

    编辑:

    我真的建议您查看proguard manual。它有许多不同项目设置和框架的例子。