7

難読化にproguardを使用すると、Androidアプリケーションがクラッシュします。以下はスタックトレースです。

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.java参照しており、このパッケージに含まれています。この問題を解決するためにProguard構成ファイルでどのオプションを使用する必要があるかについての提案はありますか?TypeReference.java

4

2 に答える 2

14

Ektorpに依存するProguardを使用して、この問題に遭遇しました。TypeReferenceはジェネリックであり、-keepattributes Signatureジェネリック情報を保持します。

私は実際に以下を使用しましたが、これで問題は解決しました。

-keepattributes Signature,*Annotation*,EnclosingMethod

プロガードの例から:

「Signature」属性は、JDK5.0以降でコンパイルするときにジェネリック型にアクセスできるようにするために必要です。

于 2013-06-07T21:16:59.223 に答える
0

ProGuardがジェネリック型情報(型パラメーターの受け渡し)を何らかの形で誤って処理しているように聞こえます。これが既知のProGuardの問題であるかどうかはわかりません。しかし、他の人がこれに遭遇した場合は、Jacksonユーザーのメーリングリストを確認することができます。TypeReferenceまた、クラスが大きく変わったとは思いませんが、別のジャクソンバージョンを試すこともできます。

于 2012-02-15T17:17:51.290 に答える