我设法对我的Scala代码进行了模糊处理,但我无法弄清楚如何对sbt assembly
步建立的jar文件进行模糊处理。或者至少如何在proguard
步骤中构建一个胖罐。我发现proguard有一个injar
参数,但我不知道如何将它应用于build.sbt
。有人可以指出我如何做到这一点。
UPD 实际上,Proguard构建的JAR只包含混淆类,而不包含Proguard忽略的类。
答案 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)