Java Proguard不';t查看嵌入式jar以查找引用
我正试图混淆proguard与bundle之间的关系。由于特定于项目的原因,my Bundle中包含库JAR,例如:Java Proguard不';t查看嵌入式jar以查找引用,java,osgi,proguard,Java,Osgi,Proguard,我正试图混淆proguard与bundle之间的关系。由于特定于项目的原因,my Bundle中包含库JAR,例如: bundle.jar | |-META-INF | |-library.jar | \-org (and the rest of my source tree) META-INF中的Manifest.mf文件包括以下行: Bundle-ClassPath: .,library.jar 这些都是自动生成的,很好 现在,当proguard试图混
bundle.jar
|
|-META-INF
|
|-library.jar
|
\-org (and the rest of my source tree)
META-INF中的Manifest.mf文件包括以下行:
Bundle-ClassPath: .,library.jar
这些都是自动生成的,很好
现在,当proguard试图混淆library.jar中的方法时,问题来了(假设我有很好的理由这么做)。在这些情况下,它找不到library.jar,因为它不是依赖库的一部分,而proguard似乎忽略了清单文件中的Bundle类路径条目
所以,问题是:这能做到吗?或者proguard完全不知道osgi,根本无法处理这些标签?有没有办法向proguard提供jar内依赖关系
谢谢 为什么不在与Proguard混淆之后,而不是之前,用其嵌入的JAR组装捆绑包?是的,Proguard完全不知道OSGi。它有意独立于任何平台 此外,ProGuard可以处理类文件,可以选择在JAR内部,也可以选择在WAR内部,可以选择在EAR内部,也可以选择在ZIP内部,但不能处理JAR内部的类文件 美国联邦法规。ProGuard手册>用法>类路径。如果使用bnd(maven、bndtools等),则可以展开jar文件。使用以下说明:
Include-Resource: @library.jar
在这种情况下,您会得到一个普通的JAR,它也可以在类路径上使用。这应该不会给混淆器带来任何问题。如果要从此库导出包,请使用-exportcontents而不是export-Package,它们都有相同的语法。不幸的是,我需要在jar级别进行混淆。我有一大堆不同的捆绑包,它们之间相互依赖……这并不能解释为什么在将
library.jar
放入bundle.jar
之前不能混淆它……我明白了!好的,你是对的,这确实是可行的。不过,这不是最简单的设置。我最终选择在父jar中解包jar的类,并一次性混淆所有的类。到目前为止,我所做的是使用依赖项:解包依赖项来解包jar中的主题…@NeilBartlett的解决方案是严格正确的,Eric Lafortune的解决方案限制了可能的解决方案。我最终选择在我的目标jar中解包jar,因为这对我来说并没有什么影响。谢谢大家!谢谢这就澄清了问题!