gpt4 book ai didi

java - 使用 ProGuard 混淆后如何保留 jar 依赖关系

转载 作者:行者123 更新时间:2023-11-30 04:46:12 24 4
gpt4 key购买 nike

我有一个 jar 文件集合,这些文件具有菱形图案的依赖关系:

          base.jar
         /          \
dep1.jar     dep2.jar
         \          /
         dep3.jar

我想用 ProGuard 对它们进行混淆以保留它们的依赖关系,这样,例如,base.jar 和 dep2.jar 的混淆版本可以单独执行,而无需 dep1.jar 和 dep3.jar 的混淆版本(就像他们可以的那样,不混淆)。有一些类分布在具有相同包名的 jar 中,并且依赖 jar 中的方法在它们所依赖的 jar 中调用我想要混淆的方法(在各个类中)。 p>

当我尝试一次混淆所有 jar 时,ProGuard 无法“理解”它们的依赖关系;并从 base.jar 中的类中获取静态方法,并将其移动到 dep1.jar 中的混淆类中。 dep2.jar 的模糊版本中的代码“期望”base.jar 中的该方法,如果 dep1.jar 不在类路径中,则在运行时失败。

如何确保保留混淆的 jar 中的依赖项?

文档建议使用 incremental obfuscation但它似乎需要的 -applymapping 开关只能采用一个参数,告诉依赖方法在调用它们所依赖的 jar 时使用的混淆名称 em>,首先会被混淆。 dep1.jar 的混淆可以生成一个这样的映射文件参数,而 dep2.jar 的混淆可以生成另一个这样的映射文件参数,但是 dep3.jar 的混淆需要这些映射文件中的两个(加上 base.jar 的映射文件参数) ?)在其 -applymapping 参数中。但是,dep1.jar 和 dep2.jar 不能一起混淆(或者可以吗?)来生成单个映射文件,因为代码可能会从一个映射文件重定位到另一个映射文件。 我必须自己合并映射文件吗?

最佳答案

最简单(尽管不是最优)的解决方案是一次性处理所有这些,而不进行优化(-dontoptimize)。

关于java - 使用 ProGuard 混淆后如何保留 jar 依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com