2012-06-28 14 views
21

私はProGuardとAndroidを扱う際に問題があります。ProGuardをAndroidで使用する

私は数時間Web上を検索し、Androidアプリケーションを難読化する方法がいくつか見つかりました。今の私はそう、最も簡単になりそうだものをしようとしている:

  • 私は
  • 私のプロジェクトのルートディレクトリにconfig.cfgファイルを作成し、私は私のproject.properties
  • Iでproguard.config=config.cfgを追加しました&看板私はを言ってメッセージを得た

の.apkファイルをエクスポートするには、Eclipseのエクスポートウィザードを使用10とコンソールに:私は公式ProGuardのウェブサイトが提供する設定、またはデフォルトの1を使用する場合でも

Proguard returned with error code 1. See console 
Note: there were 3847 duplicate class definitions. 
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
     You should check if you need to specify additional program jars. 
Warning: there were 4 unresolved references to classes or interfaces. 
     You may need to specify additional library jars (using '-libraryjars'). 
Error: Please correct the above warnings first. 

私はエラーを持っています。ここ
は私のカスタム設定(MyProjectと/のconfig.cfg)です:

-injars  bin/classes 
-injars  libs 
-libraryjars "C:\Program Files\Android\android-sdk\platforms\android-13\android.jar" 

-dontskipnonpubliclibraryclasses 
-optimizationpasses 5 
-printmapping map.txt 
-flattenpackagehierarchy 
-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-keep public class * extends android.app.Application 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.PreferenceActivity 
-keep public class * extends android.view.View 
-keep public class * extends android.widget.BaseAdapter 
-keep public class * implements android.view.View.OnTouchListener 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.content.Context { 
    public void *(android.view.View); 
    public void *(android.view.MenuItem); 
} 

-keepclassmembers class * implements android.os.Parcelable { 
    static android.os.Parcelable$Creator CREATOR; 
} 

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

私はそれが仕事を得ることができない...任意のアイデアをいただければ幸いです!

注:は、私は私のプロジェクト

答えて

33

1のlibsフォルダに格納されているジャクソンJSONのlibrairiesを使用)ProGuard manual > Troubleshooting > Note: duplicate definition of program/library class

アンドロイドのAnt/Eclipseのは、すでにあなたのため-injars/-libraryjarsを指定して構築します。設定でそれらを再度指定すると、ProGuardはそれらが複製されていることに気付きます。 -injars/-libraryjarsを指定しないでください。

2)ProGuard manual > Troubleshooting > Warning: can't find referenced class

org.w3c.dom.bootstrap.DOMImplementationRegistryは、入力されたコードに存在しない、まだcom.fasterxml.jackson.databind.ext.DOMSerializerは、それを使用しています。とにかく、あなたのアプリケーションが動作する場合は、ProGuardのはでそれを受け入れるせることができます:

-dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry 
+0

援助のためのThx。 コンパイル/難読化はエラーなく動作しますが、JSONライブラリを使用するオブジェクトを持つアクティビティにリダイレクトするボタンをクリックすると、アプリケーションがクラッシュします... – Flawyte

+0

まだ動作しない?? – Flawyte

+0

私のためにもええ...それはエラーを投げていませんが、私のflexJsonは動作を停止しました – sheetal

1

私はちょうど同じ問題で立ち往生、と私はJREのrt.jarのファイルを参照することによってそれを解決してしまった:

-libraryjars/lib/rt.jarの

私はそれが

関連する問題