【问题标题】:Android Proguard - IllegalArgumentException in Jackson's TypeReference classAndroid Proguard - Jackson 的 TypeReference 类中的 IllegalArgumentException
【发布时间】:2012-02-14 19:10:48
【问题描述】:

如果使用 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 指的是this 文件,TypeReference.javathis 包中。关于我应该在 Proguard 配置文件中使用什么选项来解决这个问题的任何建议?

【问题讨论】:

  • 你找到解决方案了吗?
  • 没有。还没有。需要看看我怎样才能跳过杰克逊。

标签: android jackson proguard illegalargumentexception


【解决方案1】:

我刚刚在使用带有 Ektorp 依赖项的 Proguard 时遇到了这个问题。 TypeReference 是泛型,-keepattributes Signature 将保留泛型信息。

我实际上使用了以下,它解决了我的问题。

-keepattributes Signature,*Annotation*,EnclosingMethod

来自Proguard Examples

在 JDK 5.0 及更高版本中编译时,需要“Signature”属性才能访问泛型类型。

【讨论】:

    【解决方案2】:

    听起来 ProGuard 以某种方式错误地处理了泛型类型信息(传递类型参数)。我不知道这是否是一个已知的 ProGuard 问题;但如果其他人遇到此问题,您可以查看 Jackson 用户邮件列表。此外,您可以尝试不同的 Jackson 版本,尽管我认为 TypeReference 类没有太大变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多