Как исключить 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>;
}