我正在尝试使用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-Classpath条目。
所以,问题是:这可以完成吗?或者是完全osgi不可知的proguard并且根本无法处理这些标签?有没有办法可以为proguard提供in-jar依赖?
谢谢!
答案 0 :(得分:2)
为什么不在与Proguard混淆之后用它的嵌入式JAR 组装捆绑包,而不是之前?
答案 1 :(得分:2)
是的,ProGuard完全与OSGi无关。它故意独立于任何平台。
此外,ProGuard处理类文件,可选择在jar内,可选择在内部战争中,可选择在内部耳内,可选择在内部拉链内,但不包括jar内jars内的类文件。
(CFR)。 ProGuard手册>用法>类路径。
答案 2 :(得分:1)
如果你使用bnd(maven,bndtools等),你可以展开一个jar文件。使用以下说明:
Include-Resource: @library.jar
在这种情况下,您将获得一个也可以在类路径上使用的普通JAR。这应该对混淆器没有问题。如果要从此库导出包,请使用-exportcontents而不是Export-Package,它们都具有相同的语法。