Какова семантика «proguardInJars» в Android-плагине SBT?

1

В SBT Android Plugin в proguardTask есть значение 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 работал без проблем?

Теги:
proguard
sbt
sbt-android-plugin

1 ответ

1
Лучший ответ

Плагин android готовит аргумент командной строки injars для ProGuard в этот момент. ProGuard использует обобщенные пути к классам, чтобы выяснить, какие файлы из 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню