混淆后我的jar文件的集合与菱形图案的依赖关系:如何留住JAR依赖使用ProGuard
base.jar
/ \
dep1.jar dep2.jar
\ /
dep3.jar
我想使用ProGuard混淆他们保留自己的依赖关系,因此,例如,base.jar的模糊版本和dep2.jar可以独立执行,不需要dep1.jar和dep3.jar的混淆版本(就像它们可以,未混淆一样)。在具有相同包名的罐子中分布有类,并且依赖罐中的方法调用方法(在各种类中),我想在它们所依赖的罐子中对其进行模糊处理。
当我试图一次模糊所有瓶子时,ProGuard并不“理解”它们的依赖;并从base.jar中的类采取静态方法,并将其移至dep1.jar中的混淆类。如果dep1.jar不在类路径中,代码位于dep2.jar的模糊版本中,“期望”base.jar中的方法在运行时失败。
我该如何确保混淆瓶子中的依赖关系得以保留?
文档建议使用incremental obfuscation但-applymapping
开关似乎需要只能拿一个参数告诉依赖方法混淆的名称在调用到它们依赖于罐子使用,这会首先混淆。 dep1.jar的混淆可以产生一个这样的映射文件参数,而dep2.jar的混淆可以产生另一个,但dep3.jar的混淆需要这些映射文件(加上base.jar?)在其-applymapping
论据。然而,dep1.jar和dep2.jar不能混淆在一起(,或者他们可以?),因为代码可能会从一个映射文件重新定位到另一个映射文件。 我必须自己合并映射文件吗?
谢谢!这似乎奏效了。 – lefty