我已经设法对Scala代码进行了模糊处理,但我不知道如何对由SBT Assembly
步骤构建的jar文件运行模糊处理。或者至少在ProGuard
步骤中如何构建fat jar。我发现proguard有一个injar
参数,但我不知道如何将它应用于build.sbt
。谁能告诉我怎么才能做到这一点。
UPD,实际上,Proguard构建的JAR只包含模糊的类,而不包含Proguard忽略的类。
要对以前由assembly
任务生成的jar文件运行Proguard模糊处理,您应该重写build.sbt中的inputs
设置:
proguardInputs in Proguard := Seq((assemblyOutputPath in assembly).value)
这将指定fat jar作为ProGuard的单个输入。此外,您可能希望修改用于模糊处理的输入库。下面是一个如何排除所有库的示例:
proguardLibraries in Proguard := Seq()
最后禁用输入筛选器,因为您只有一个类源:
proguardInputFilter in Proguard := { file => None }
上面的设置是必需的,因为Proguard默认情况下会排除meta-inf/manifest.mf
文件。此外,由于assembly
任务已执行此步骤,因此不再需要合并步骤:
proguardMerge in Proguard := false
最后向Proguard任务添加assembly
依赖项:
(ProguardKeys.proguard in Proguard) <<= (ProguardKeys.proguard in Proguard).dependsOn(assembly)
我正在尝试使用sbt发布ProGuard jar模糊处理的文件。到目前为止,我已经有了这段代码,但它并没有使用将模糊化的jar推送到本地ivy2 repo中: 你以前有没有做过这样的事情或者有什么想法? 非常感谢。
我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?
我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?
问题内容: 是否可以仅将ProGuard用于混淆。我不希望ProGuard从我的项目中删除任何类。我打算使用ProGuard只是为了混淆,以防止进行反向工程。 问题答案: 是的,通过指定 您可以在ProGuard手册中找到有关所有配置选项的详细信息。 请注意,缩小和优化可能有助于防止反向工程。
我有一个罐子用另一个罐子做库。我希望它们都被混淆。 引用ProGuard文档: ProGuard要求指定输入jar的库jar(或war、ears、zips或目录)。这些本质上是编译代码所需的库。ProGuard使用它们来重建正确处理所必需的类依赖关系。库罐子本身始终保持不变。您仍然应该将它们放在最终应用程序的类路径中。
我尝试在android studio中使用Proguard,但Proguard似乎没有混淆类名,例如,我的应用程序结构和配置: 和配置 但当我尝试在应用程序中触发异常时: ADB控制台中列出了异常: 只有方法被混淆了,MainActivity.class没有