1

在 SBT Android 插件中,在 proguardTask 中,有一个 value proguardInJars
在我的简单测试项目中,它包含C:\Users\Administrator\.sbt\boot\scala-2.9.1\lib\scala-library.jar.

然后将它与我自己编译的类组合成另一个值inJars

但是,它是通过附加一些东西来组合的。这是来自 jberkel/android-plugin 的代码:

val manifestr = List("!META-INF/MANIFEST.MF", "R.class", "R$*.class", "TR.class", "TR$.class", "library.properties")
val sep = JFile.pathSeparator
val inJars = ("\"" + classDirectory.absolutePath + "\"") +: proguardInJars.map("\"" + _ + "\""+manifestr.mkString("(", ",!**/", ")"))

我想知道是否有人知道添加的东西的语义。
另外,如果我要分解inJars成单独的值,我是否还需要附加清单内容proguardInJars才能proguardTask正常运行?

4

1 回答 1

1

android 插件此时正在injars为 ProGuard 准备命令行参数。ProGuard 使用通用类路径来确定 jar 中的哪些文件要考虑,哪些不考虑,这是 jar 中文件匹配器的一种形式。

例如,.../scala-library.jar(!META-INF/MANIFEST.MF,!**/R.class,!**/R$*.class,!**/TR.class,!**/TR$.class,!**/library.properties)表示不应将 ( )R/TR.class开头的文件或类文件R$视为输入。TR$!

看这里:

http://proguard.sourceforge.net/index.html#manual/usage.html

单击class_path以显示有关 ProGuard 使用的通用类路径格式的更多详细信息。

于 2012-07-04T09:56:38.320 回答