2012-02-14 3 views
7

Приложение для Android отключается, если proguard используется для обфускации. Ниже находится стек.Android Proguard - IllegalArgumentException в классе класса Jackson TypeReference

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.java в this пакете. Любое предложение о том, какой вариант я должен использовать в конфигурационном файле Proguard для решения этой проблемы?

+0

Вы когда-нибудь находили решение этого вопроса? –

+0

нет. еще нет. нужно посмотреть, как я могу пропустить джексон. – 500865

ответ

14

Я просто столкнулся с этой проблемой, используя Proguard с зависимостью Ektorp. ТипReference является общим, и -keepattributes Signature сохранит общую информацию.

Я фактически использовал следующее, которое решило мою проблему.

-keepattributes Signature,*Annotation*,EnclosingMethod 

От Proguard Examples:

«подпись» атрибут должен иметь возможность доступа к общим типов при компиляции в JDK 5.0 и выше.

+0

Спасибо, Дэвид решил мою проблему :) – Bojan

+0

спасибо, он тоже решил мою проблему: D – cn123h

0

Похоже, что ProGuard неправильно передает информацию о типовом типе (передача параметров типа). Я не знаю, будет ли это известная проблема ProGuard; но вы можете проверить список рассылки пользователей Джексона, если другие столкнулись с этим. Кроме того, вы можете попробовать другую версию Jackson, хотя я не думаю, что класс TypeReference сильно изменился.

Смежные вопросы