web-dev-qa-db-ja.com

ProGuard警告:プログラムクラスメンバーへの未解決の参照が7件ありました

ProGuardは多くの警告で停止します:

警告:クラスまたはインターフェースへの未解決の参照が1221件ありました。不足しているライブラリjarを追加するか、それらのバージョンを更新する必要がある場合があります。クラスがなくてもコードが正常に機能する場合は、 '-dontwarn'オプションを使用して警告を抑制できます。 ( http://proguard.sourceforge.net/manual/troubleshooting 。html#unresolvedclass)

警告:プログラムクラスに応じて、37のライブラリクラスのインスタンスがありました。ライブラリクラスは変更されないまま、プログラムクラスが処理されるため、このような依存関係を回避する必要があります。 ( http://proguard.sourceforge.net/manual/troubleshooting 。html#dependency)警告:プログラムクラスメンバーに対する7つの未解決の参照がありました。入力クラスに一貫性がないようです。コードを再コンパイルする必要がある場合があります。 ( http://proguard.sourceforge.net/manual/troubleshooting 。html#unresolvedprogramclassmember)

エラー:上記の警告を最初に修正してください。

しかし、私のjarファイルは正しく実行されます。私はプロガードの設定に精通していません。なにか提案を?

11
Michael SM

私はあなたの質問の非常に関連性の高い部分(すなわち答え)を引用します。

Ifコードが正常に機能する場合不足しているクラスがなくても、 '-dontwarn'オプションを使用して警告を抑制します

したがって、-dontwarn私のjarが正しく実行されるため。

文書化(質問ごと) ここ オプションもあります-libraryjars追加したい外部ライブラリがある場合に使用できます。

5
Elliott Frisch

上記のような警告があります

Warning: class A: can't find referenced class B

-keep class com.package.** { *; }を使用して難読化されないようにするか、これが問題でないことが確実な場合は-dontwarn com.package.**を使用できます。

2
EpicPandaForce

ここで行う最善の方法は、ライブラリをプログラム構成ファイルに追加することです。その上部、入力と出力のjarパスの直後に、使用するライブラリjarごとに次のような行を追加します。

-libraryjars 'path/to/jar/file.jar'

これは、指定されたjarから不足しているクラスをロードするようにproguardに指示します。

2
Iamsomeone