如何使用Proguard和SBT混淆脂肪Scala Jar

时间:2016-09-23 07:35:24

标签: scala sbt proguard obfuscation

我设法对我的Scala代码进行了模糊处理,但我无法弄清楚如何对sbt assembly步建立的jar文件进行模糊处理。或者至少如何在proguard步骤中构建一个胖罐。我发现proguard有一个injar参数,但我不知道如何将它应用于build.sbt。有人可以指出我如何做到这一点。

UPD 实际上,Proguard构建的JAR只包含混淆类,而不包含Proguard忽略的类。

1 个答案:

答案 0 :(得分:7)

要对assembly任务之前构建的jar文件运行Proguard模糊处理,您应该覆盖build.sbt中的inputs设置:

proguardInputs in Proguard := Seq((assemblyOutputPath in assembly).value)

这会将你的胖罐指定为Proguard的单个输入。您可能还想修改用于混淆的输入库。以下是如何排除所有库的示例:

proguardLibraries in Proguard := Seq()

最后禁用输入过滤器,因为您只有一个类源:

proguardInputFilter in Proguard := { file => None }

上述设置是必需的,因为Proguard默认会排除META-INF/MANIFEST.MF个文件。由于assembly任务已执行此步骤,因此不再需要合并步骤:

proguardMerge in Proguard := false

最后将assembly依赖项添加到您的Proguard任务中:

(ProguardKeys.proguard in Proguard) <<= (ProguardKeys.proguard in Proguard).dependsOn(assembly)