2013-11-22 8 views
5

Android Studioで新しいプロジェクトを作成し、Gradleを使用して構築しました。Proguard Android StudioとGradleで不明なクラス 'Object'のメモ

私は私 assembleReleaseステップ実行するたびリリースのための私のProGuardの統合を構築し、私はこのノートを見ています追加しました

:私のProGuardの設定ファイル、またはAndroid SDKのものの

Note: the configuration refers to the unknown class 'Object' 
     Maybe you meant the fully qualified name 'java.lang.Object'? 

なしにフォルダには、修飾されていない名前Objectが含まれています。

build.gradleが含まれています:

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 

     signingConfig signingConfigs.release 
    } 
} 

は、私も、私は上記の両方proguardFile行を削除し、同じノートを参照しても、私は私のカスタムProGuardのルールを(毎回再構築する前にクリーンをやって)削除した場合。

これはGradle用のProguardプラグインの問題ではないと思いますか?

答えて

11

Eric Lafortuneさん、ありがとうございました!私のproguard.txtに-printconfigurationを追加すると、問題はgoogle-play-services_lib(r13)にあることが明らかになりました。

有罪ProGuardのルールは、(それがjava.lang.Object[][]する必要があります)です。

-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

あなたはsdk/extras/google/google_play_services/libproject/google-play-services_lib/proguard.txtを参照し、その後、Show Package Contentsを行い、Android Studioを右クリックし、Mac上でこれを見ることができます。

最も速い回避策は、正しいProguardルールを自分のProguard設定に追加し、Proguardノートを無視することです。

-keep class * extends java.util.ListResourceBundle { 
    protected java.lang.Object[][] getContents(); 
} 

GoogleでこのバグをAndroid Issue #63095としました。

+1

ルールを追加しましたが、依然として不満です。私はこれは、古いルールが自分のルールの後に設定ファイルにまだぶら下がっているために起こると思います。これを回避する方法はありますか? – sttaq

5

Android SDKのObjectへの不適格な参照は認識していませんが、完全な設定を書き出して参照を探したい場合は、-printconfiguration config.txtというオプションを指定できます。見逃しやすいメソッド引数または戻り値である可能性があります。

+0

ここで/どのようにこのオプションを指定しますか?どのようなコマンドの一部として?そして、それに対してtxtファイル??? –

+0

私のプロジェクトのproguardルールファイルの1つに '-printconfiguration config.txt'を追加しようとしましたが、私のアプリケーションをビルドするときに、このエラーメッセージが表示されます:'フラグ-printconfiguration config.txtは組み込みシュレッダーでサポートされていません。 –

関連する問題