2012-02-14 15 views
7

AndroidアプリケーションがクラッシュしたProGuardのは、難読化のために使用されている場合。以下はスタックトレースです。アンドロイドProGuardの - ジャクソンのTypeReferenceクラスではIllegalArgumentException

Caused by: java.lang.IllegalArgumentException: Internal error: 
    TypeReference constructed without actual type information 
    at a.b.a.g.b.<init>(TypeReference.java:35) 
    at a.c.d.q.<init>(StdCouchDbInstance.java:22) 
    at a.c.d.p.<clinit>(StdCouchDbInstance.java:22) 

私はEktorpClientライブラリを使用しています(CouchDBのを操作する)とStdCouchDbInstance.javathisファイルを参照し、TypeReference.javathisパッケージです。この問題を克服するためにProguardの設定ファイルでどのオプションを使用すべきですか? ProGuardのは、何らかの形で(型パラメータの受け渡し)を、一般的なタイプの情報を誤って処置されるよう

+0

あなたがこの解決策を見つけますか? –

+0

番号。未だに。私はジャクソンをスキップする方法を参照する必要があります。 – 500865

答えて

14

私はちょうどEKTORP依存性でProGuardのを使用してこの問題に遭遇しました。 TypeReferenceは汎用であり、-keepattributes Signatureは汎用情報を保持します。

実際に私の問題を解決した以下を使用しました。 Proguard Examplesから

-keepattributes Signature,*Annotation*,EnclosingMethod 

「署名」属性は、JDK 5.0以上でコンパイルするときの一般的なタイプにアクセスできるようにする必要があります。

+0

おかげダビデはそれは私の問題を解決:) – Bojan

+0

おかげで、それはあまりにも私の問題を解決しました:D – cn123h

0

が鳴ります。これがProGuardの既知の問題であるかどうかはわかりません。他のユーザーがこれに遭遇した場合は、Jacksonユーザーのメーリングリストをチェックするかもしれません。また、私はクラスTypeReferenceが大きく変わったとは思わないが、異なるジャクソンバージョンを試すことができます。

関連する問題