混合使用yGuard和服务提供者接口进行Java模糊处理
我在混淆java库时遇到了问题。该库的一部分应该是(SPI)的实现,因此需要从模糊处理过程中排除。使用此库的应用程序的非模糊版本工作正常。然而,经过模糊处理后,它不会 我怀疑这是由于yGuard的ANT任务中的混合使用yGuard和服务提供者接口进行Java模糊处理,java,obfuscation,yguard,Java,Obfuscation,Yguard,我在混淆java库时遇到了问题。该库的一部分应该是(SPI)的实现,因此需要从模糊处理过程中排除。使用此库的应用程序的非模糊版本工作正常。然而,经过模糊处理后,它不会 我怀疑这是由于yGuard的ANT任务中的元素设置不当造成的-它可能会删除一些方法,因为它们被认为是未使用的。我确保在模糊处理的重命名阶段()排除了包和类,所以这不应该是问题的原因 我曾希望通过指定作为收缩引擎入口点的主接口所需实现的唯一方法来避免SPI实现的收缩,但失败了。然后,这个方法将委托给其他接口实现,所以我希望整个过程都
元素设置不当造成的-它可能会删除一些方法,因为它们被认为是未使用的。我确保在模糊处理的重命名阶段(
)排除了包和类,所以这不应该是问题的原因
我曾希望通过指定作为收缩引擎入口点的主接口所需实现的唯一方法来避免SPI实现的收缩,但失败了。然后,这个方法将委托给其他接口实现,所以我希望整个过程都能顺利完成。请看下面的内容:
我正在实现一组接口。它们可以通过SPI调用
如何使用yGuard指定要从混淆过程(重命名和收缩)中排除的整个包?仔细阅读yGuard的文档后,我意识到我做错了什么(没有错,我遗漏了什么)。如果您执行我在问题中所做的操作,它将导致收缩引擎保留您指定的方法,但不会保留类的构造函数,这将导致SPI无法实例化您的实现 需要做以下工作:
这将使特定类的公共API免于混淆、收缩和重命名。您只需省略使服务提供商实现得以实例化的部分。仔细阅读yGuard的文档后,我意识到我做错了什么(没有错,我遗漏了什么)。如果您执行我在问题中所做的操作,它将导致收缩引擎保留您指定的方法,但不会保留类的构造函数,这将导致SPI无法实例化您的实现 需要做以下工作:
这将使特定类的公共API免于混淆、收缩和重命名。您只需要省略使您的服务提供者实现能够被实例化的部分