Как исключить файлы R * .class из сборки proguard - PullRequest
8 голосов
/ 22 мая 2010

Я в шаге от создания описанного здесь метода: Ориентация на Android с помощью сборок магистрали Scala 2.8

работа с одним проектом (против одного проекта для Scala и одного для Android).

Я столкнулся с проблемой. Используя этот входной файл (аргументы) proguard:

-injars bin;lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)

-outjar lib/scandroid.jar

-libraryjars lib/android.jar

-dontwarn
-dontoptimize
-dontobfuscate
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class org.scala.jeb.** { public protected *; }
-keep public class org.xml.sax.EntityResolver { public protected *; }

Proguard успешно собирает scandroid.jar, однако, похоже, он включает сгенерированные R-классы, которые конструктор ресурсов Android генерирует и компилирует. В этом случае они находятся в bin / org / jeb / R * .class. Это не то, что я хочу. Конвертер Android Dalvik не может создать, потому что он думает, что есть дубликат класса R (это в Scandroid, а также файлы R * .class). Как я могу изменить приведенные выше аргументы proguard, чтобы исключить файлы R * .class из scandroid.jar, чтобы преобразователь dalvik был доволен? Изменить: я должен отметить, что я попытался добавить; bin / org / jeb / R.class; и т. Д. ... к аргументу -libraryjars, и это, казалось, только заставило его жаловаться на дублирующиеся классы, и в дополнение proguard решил исключить мои файлы классов scala тоже.

Ответы [ 2 ]

7 голосов
/ 24 марта 2011

Я использую эту опцию. Вы можете найти ссылку по ссылке ниже и найти «Полное приложение для Android». http://proguard.sourceforge.net/index.html#/manual/examples.html

-keepclassmembers class **.R$* {
    public static <fields>;
}
4 голосов
/ 23 мая 2010

фильтр файлов! ** / * R.java, другими словами, это удержание заставляет Proguard сохранять все java-файлы, кроме файлов R.java, в обфускации

...