Сбой в getDeclaredAnnotation при использовании Proguard
У меня есть приложение для Android с 10 проектами библиотеки и одним проектом приложения. 2 из библиотечных проектов используют библиотеку Джексона в качестве зависимостей. Вот фрагмент из build.gradle для них обоих
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.4'
compile 'com.fasterxml.jackson.core:jackson-core:2.4.4'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.4'
Теперь мое приложение вылетает со следующим исключением
at java.lang.Class.getDeclaredAnnotations(Native Method) at com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveClassAnnotations(AnnotatedClass.java:308) at com.fasterxml.jackson.databind.introspect.AnnotatedClass.getAnnotation(AnnotatedClass.java:173) at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.isIgnorableType(JacksonAnnotationIntrospector.java:97) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.isIgnorableType(BeanDeserializerFactory.java:870) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.filterBeanProps(BeanDeserializerFactory.java:635) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:527) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:270) at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:168) at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:399) at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:348) at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:261) at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:241) at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:394) at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3169) at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3033) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1652)
До сбоя я мог видеть следующие строки в журнале
Class resolved by unexpected DEX: Lcom/vocalocity/Administration/api/support/extensionKit/ExtkitConfig;(0x41ac7088):0x7acd1000 ref [Lcom/fasterxml/jackson/annotation/JsonAutoDetect$Visibility;] Lcom/fasterxml/jackson/annotation/JsonAutoDetect$Visibility;(0x41ac7088):0x7a356000 (Lcom/vocalocity/Administration/api/support/extensionKit/ExtkitConfig; had used a different Lcom/fasterxml/jackson/annotation/JsonAutoDetect$Visibility; during pre-verification) Failed processing annotation value
Я пытался создать приложение без использования Proguard
minifyEnabled = false
Тогда все работает нормально. Но это не вариант, так как мне нужно сделать запутывание для моего приложения. Я попробовал следующее в моем файле proguard.
-keep class com.fasterxml.jackson.** { *; }
-keepattributes *Annotation*
Но это все еще дает крах. Не могли бы вы сказать мне, как избежать этого сбоя?