Android Proguard – исключение IllegalArgumentException в классе Джексона TypeReference

Приложение Android аварийно завершает работу, если для запутывания используется proguard. Ниже приведена трассировка стека.

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


person 500865    schedule 14.02.2012    source источник
comment
Вы когда-нибудь находили решение этой проблемы?   -  person Amir Raminfar    schedule 08.08.2012
comment
нет. еще нет. нужно посмотреть, как я могу пропустить Джексона.   -  person 500865    schedule 13.08.2012


Ответы (2)


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

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

-keepattributes Signature,*Annotation*,EnclosingMethod

Из примеров Proguard:

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

person David V    schedule 07.06.2013

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

person StaxMan    schedule 15.02.2012