How to exclude R*.class files from a proguard build


November 2018


6.1k time


I am one step away from making the method described here: Targeting Android with Scala 2.8 Trunk builds

work with a single project (vs one project for scala and one for android).

I've come across a problem. Using this input file (arguments to) proguard:

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

-outjar lib/scandroid.jar

-libraryjars lib/android.jar


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

Proguard successfully builds scandroid.jar, however it appears to have included the generated R classes that the android resource builder generates and compiles. In this case, they are located in bin/org/jeb/R*.class. This is not what I want. The android dalvik converter cannot build because it thinks there is a duplicate of the R class (it's in scandroid and also the R*.class files). How can I modify the above proguard arguments to exclude the R*.class files from the scandroid.jar so the dalvik converter is happy? Edit: I should note that I tried adding ;bin/org/jeb/R.class;etc... to the -libraryjars argument, and that only seemed to cause it to complain about duplicate classes, and in addition proguard decided to exclude my scala class files too.

2 answers


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


Я использую эту опцию. Вы можете найти ссылки из ссылки ниже , и найти «Полное приложение для Android».

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