8

ここで説明する方法を作成するまであと 1 歩です: Scala 2.8 トランク ビルドを使用して Android をターゲットにする

単一のプロジェクトで作業します (vs scala 用の 1 つのプロジェクトと android 用の 1 つのプロジェクト)。

問題が発生しました。この入力ファイルを使用して (引数) 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 を正常にビルドしますが、android リソース ビルダーが生成およびコンパイルする生成された R クラスが含まれているようです。この場合、それらは bin/org/jeb/R*.class にあります。これは私が望むものではありません。android dalvik コンバーターは、R​​ クラスの重複があると見なされるため、ビルドできません (scandroid と R*.class ファイルにあります)。上記の proguard 引数を変更して scandroid.jar から R*.class ファイルを除外し、dalvik コンバーターが満足するようにするにはどうすればよいですか? 編集: ;bin/org/jeb/R.class;etc... を -libraryjars 引数に追加しようとしたことに注意してください.私のscalaクラスファイルも。

4

2 に答える 2

7

私はこのオプションを使用します。以下のリンクから参照を見つけることができ、「完全な Android アプリケーション」を見つけることができます。 http://proguard.sourceforge.net/index.html#/manual/examples.html

-keepclassmembers class **.R$* {
    public static <fields>;
}
于 2011-03-24T02:10:25.320 に答える
4

file filter !**/*R.java 言い換えると、この先取特権により、Proguard は R.java ファイルを除くすべての Java ファイルを難読化に保持するように強制されます。

于 2010-05-22T21:36:35.797 に答える