2015-10-10 15 views
6

を見つけることができません。アンドロイドProGuardの:私はこのような警告を取得私のAndroid StudioプロジェクトでProGuardの実行参照クラス

Warning: com.google.common.collect.Maps: can't find referenced class javax.annotation.Nullable 

を、私はこれのいずれかでこの問題を解決するかもしれない変異体:

-keep class com.google.common.collect.** { *; } 
-dontwarn com.google.common.collect.** 
-keep class javax.annotation.** { *; } 
-dontwarn javax.annotation.** 

上記の警告を解決する最良の方法は何ですか?変種1.と2.の違いは何ですか?

+0

は、あなたの 'build.gradle'ファイルを表示します –

答えて

6

これはのbeacuse最も一般的なエラーです「多くのコンパイル済みのサードパーティ製のライブラリが実際に使用されていないため、存在していない他のライブラリを参照してください。これは、デバッグで正常に動作します構築しますが、リリースビルドでは、ProGuardのは想定していすべての図書館で、適切な静的分析を行うことができます。

から:http://proguard.sourceforge.net/index.html#manual/examples.html

ので、このjavax.annotation.Nullableは、プロジェクトで使用できない可能性がありますが、あなたが使用しているライブラリは内部でそれらを参照しているいくつかのクラスがあります。

ただし、これらの警告は-dontwarn javax.annotation.**または--dontwarn com.google.common.collect.**で回避できます。しかし、私は-keep class javax.annotation.** { *; }とは思っていません。

-keep class com.google.common.collect.** { *; }を実行した場合、私の理解に従って意味をなさないProguard実行(縮小、最適化、難読化)の3つのステップすべてからこのパッケージをスキップします。

1

-keep class com.package_name.** { *; } 
0

が代わりにサポートLIBSのNullableを使用してパッケージを追加することを忘れないでください:

import android.support.annotation.Nullable; 
関連する問題