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

Zyo*_*oma 7 obfuscation scala proguard sbt

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

UPD实际上,由Proguard构建的JAR只包含混淆的类,而不是Proguard忽略的那些类.

Zyo*_*oma 7

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

proguardInputs in Proguard := Seq((assemblyOutputPath in assembly).value)
Run Code Online (Sandbox Code Playgroud)

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

proguardLibraries in Proguard := Seq()
Run Code Online (Sandbox Code Playgroud)

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

proguardInputFilter in Proguard := { file => None }
Run Code Online (Sandbox Code Playgroud)

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

proguardMerge in Proguard := false
Run Code Online (Sandbox Code Playgroud)

最后assembly为您的Proguard任务添加依赖项:

(ProguardKeys.proguard in Proguard) <<= (ProguardKeys.proguard in Proguard).dependsOn(assembly)
Run Code Online (Sandbox Code Playgroud)