如何从proguard版本中排除R * .class文件

我离这里描述的方法只有一步之遥: 用Scala 2.8 Trunk构buildAndroid

与一个单一的项目(一个项目为斯卡拉和一个为Android)。

我遇到了一个问题。 使用这个input文件(参数)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成功构build了scandroid.jar,但它似乎包含了由android资源构build器生成和编译的生成的R类。 在这种情况下,它们位于bin / org / jeb / R * .class。 这不是我想要的。 Android的dalvik转换器不能build立,因为它认为有重复的R类(这是在scandroid和R * .class文件)。 我怎样才能修改上述proguard参数从scandroid.jar排除R * .class文件,所以达尔维克转换器是快乐的? 编辑:我应该注意到,我试图添加; bin / org / jeb / R.class;等等…到-libraryjars参数,似乎只会导致它抱怨重复的类,此外proguard决定排除我的Scala类文件也是如此。

Solutions Collecting From Web of "如何从proguard版本中排除R * .class文件"

文件filter!** / * R.java换句话说,这个留置权强制Proguard将除了R.java文件以外的所有java文件都保存在模糊处理中

我使用这个选项。 你可以从下面的链接find参考,并find“一个完整的Android应用程序”。 http://proguard.sourceforge.net/index.html#/manual/examples.html

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