我们开发了一个带有游戏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
是否有人成功使用此插件和播放框架?
答案 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
现在,对于配置文件,您需要指定:
outjar - 混淆jar(输出)的路径。在该过程结束时,只需将此jar复制回lib目录并将其重命名为jar中的名称。
keep - 任何需要保留其名称的包名,类,方法或字段。您应该在webapp中保留的常见内容:
3.1。控制器方法名称。
3.2。 play.conf使用并在application.conf中指定的任何类,如ErrorHandler,ApplicationLoader
3.3。所有路由器生成的类
库 - 包括lib文件中除自己的jar之外的所有库。
所以你的conf.pro文件应该是这样的:
java -jar /path/to/proguard/lib/proguard.jar @CONF_FILE
在混淆完成后你将输出jar复制回旧的目录和名称,你可以压缩你的项目并且你有一个混淆的游戏项目!
编辑:
我真的建议您查看proguard manual。它有许多不同项目设置和框架的例子。