質問

ここで説明するメソッドを作成するまであと一歩です。Scala 2.8 Trunk ビルドで Android をターゲットにする

単一のプロジェクトで作業します (scala の場合は 1 つのプロジェクト、Android の場合は 1 つのプロジェクト)。

問題が発生しました。この入力ファイル (引数) を使用してプロガードを実行します。

-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 ファイルにもあります)。dalvik コンバーターが満足できるように、scandroid.jar から R*.class ファイルを除外するように上記の proguard 引数を変更するにはどうすればよいですか?編集:;bin/org/jeb/R.class;などを追加しようとしたことに注意してください...-libraryjars 引数に追加すると、重複したクラスについて文句を言うだけのようで、さらに proguard は私の scala クラス ファイルも除外することにしました。

役に立ちましたか?

解決

ファイル フィルター !**/*R.java、つまり、このリーエンは、Proguard に R.java ファイルを除くすべての Java ファイルを難読化内に保持することを強制します。

他のヒント

私はこのオプションを使用します。以下のリンクから「完全な Android アプリケーション」を参照してください。http://proguard.sourceforge.net/index.html#/manual/examples.html

-keepclassmembers class **.R$* {
    public static <fields>;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top