Как исключить R*.файлы классов из сборки proguard

Я в одном шаге от создания метода, описанного здесь: таргетинг на Android с помощью Scala 2.8 Trunk builds

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

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

-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 resource builder и составляет. В этом случае они расположены в bin/org/jeb/R*.класс. Это не то, чего я хочу. Конвертер Android dalvik не может построить, потому что он думает, что есть дубликат класса R (он находится в scandroid, а также R*.файл класса.) Как я могу изменить приведенные выше аргументы proguard, чтобы исключить R*.файлы классов из scandroid.jar Итак, конвертер dalvik доволен? Edit: я должен отметить, что я попытался добавить ;bin/org/jeb/R.class; etc... к-библиотечному спору, и это только казалось причиной это жаловаться на дубликаты классов, и кроме того, proguard решил исключить мои файлы класса scala тоже.

2 ответов


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


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

-keepclassmembers class **.R$* {
    public static <fields>;
}