2012-09-25 9 views
5

私にはうってつけの解決策はありません。私はそれが使いやすいと思っていた。 私はちょうどこれが私のProGuardの-project.txtProguard:参照されているクラスが見つかりません

-injars  bin/classes 
-injars  libs 
-outjars  bin/classes-processed.jar 
-libraryjars C:/Users/ME/android-sdks/platforms/android-10/android.jar 

-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 

-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>; 
} 

とproject.properties

#Proguard enabled 
proguard.config=C:/Users/ME/android-sdks/tools/proguard/proguard-android.txt:proguard-project.txt 

警告を持つクラスの一部であるであるcan't find referenced class

の完全なコンソールを取得:

org.apache.avalon.framework.logger.Logger 
org.apache.log4j.Category 
org.apache.log4j.Priority 
org.apache.log4j.Logger 
... 
javax.servlet.ServletContextListener 
javax.servlet.ServletContextEvent 
org.w3c.dom.html.HTMLAnchorElement 
org.w3c.dom.html.HTMLObjectElement 
org.w3c.dom.html.HTMLTableSectionElement 
org.w3c.dom.html.HTMLFrameSetElement 
... 
org.w3c.dom.events.DocumentEvent 
org.w3c.dom.traversal.NodeFilter 
... 
org.w3c.dom.ranges.Range 
org.w3c.dom.ranges.RangeException 
... 
org.w3c.dom.html.HTMLDocument 

答えて

1

私が覚えていることは、あなたがJarファイルは間違った方法でファイルされます。

また、ユーザー名(ME)にスペースが含まれている場合C:/Users/ME/android-sdks/tools/proguard/proguard-android.txt:proguard-project.txt Proguardは「面白い」方法で壊れます。 android-sdkをC:\android-sdkに移動して頭痛を救いましょう。

+2

私のユーザー名は「私」です:)あなたは私がそれらを間違って参照した方法とそれを修正する方法を拡張してください。ありがとう – Doomsknight

9

あなたの設定に追加します。

-libraryjars org.apache.jar // name of your jars. 
-libraryjars org.w3c.jar 

それが追加解決しない場合:

-dontwarn org.apache.** tag 

またはちょうどそれは、あなたのアプリが満たされていない依存関係の上に、実行時にクラッシュを引き起こす可能性があるので(非常に非推奨警告を無視します):

-ignorewarnings 

この文書はあなたに役立ちます:http://proguard.sourceforge.net/manual/troubleshooting.html

+3

Iveは既にそれを読んでいました。あなたが何をしているのか分からない限り、無視警告を使わないように言います。名前:ああ、あなたはそれにrefferingとそれは大丈夫です知っている。しかし、物事がうまくいかないことを意味します。したがって、idは警告を無視するよりも適切にリンクします – Doomsknight

+0

-ignoreタグを使用したくない場合は、警告付きのクラスをsrc(source)フォルダにコピーしてください。 – Yahor10

+1

+1が役に立ちますが、これは自分のクラスではありません。私はちょうどプロガードをあきらめようとしています。あまりにも面倒です。 – Doomsknight

0

あなたは次のようなエラーがある場合、あなたのライブラリーのProGuardのコンフィグ

+0

例を挙げてください。 –

5

に-libraryjarsを追加する必要がありますよりも、あなたは、ライブラリプロジェクトを使用している場合:

Warning: com.package...: can't find referenced class com.secondpackage....Classname 

をちょうどあなたのファイルProGuardの-アンドロイドに追加します。

-keep class com.package.*{ *; } 
-dontwarn com.package.** 

TXTこのファイル名は

buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-android.txt' 
     } 
    } 
0123ビルドのGradleで書かれています
+6

なぜ&dontwarnを保つのですか? – deadfish

0

私の場合、リリース時にProGuardを実行している間、Android Studioはフリーズしました。私はそれを殺した。再起動後、「参照クラスが見つかりません」という警告が表示されるようになりました。

解決方法:私はAndroidスタジオを閉じ、自分のプロジェクトフォルダから.gradleフォルダを削除してから、gradleグローバルキャッシュ(%USER_HOME%.gradle/caches)を削除しました。プロジェクトを再度開いた後、キャッシュが再構築され、すべてが再び機能し始めました。

関連する問題