6

我有一个带有 10 个库项目和一个应用程序项目的 android 应用程序。2 个库项目使用 jackson 库作为依赖项。这是他们两个的 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*

但它仍然会崩溃。你能告诉我如何避免这种崩溃吗?

4

0 回答 0