2017-04-26 7 views
1

나는 을 사용합니다. Retrofit 2.1.0Jackson 2.8.6 파서로 사용합니다. 그러나 Pro Guard가 활성화되어 있으면 작동하지 않습니다. 로그에활성화 된 후 Pro Guard Jackson 파서가 작동하지 않습니다.

Exeption는 :

D/EXAMPLE_PROJ: Class com.example.network.d.b.a.m$a has no default (no arg) constructor 
at [Source: [email protected]; line: 1, column: 1] 

버전 내 Gradle을 lib에 : 개조 및 잭슨에 대한

dependencies { 
    def supportLibraryVersion = "25.3.1" 
    def retrofitVersion = "2.1.0" 
    def playService = '10.2.0' 
    def jacksonVersion = "2.8.6" 

내 프로 가드 규칙 :

# Retrofit2 
-dontwarn okio.** 
-dontwarn retrofit2.Platform$Java8 

# Jackson 
-keepnames class com.fasterxml.jackson.** { *; } 
-dontwarn com.fasterxml.jackson.databind.** 
-dontwarn org.codehaus.jackson.** 
-dontwarn javax.xml.** 
-dontwarn javax.xml.stream.events.** 
-keep class org.codehaus.** { *; } 
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility { 
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; } 

-keepclassmembers class * { 
    @com.fasterxml.jackson.annotation.JsonCreator *; 
    @com.fasterxml.jackson.annotation.JsonProperty *; 
} 
-keepnames class com.fasterxml.jackson.** { *; } 

을 나는 기쁠 것이다 어떤 도움이라도!

답변

1

터닝 아웃 솔루션은이 경우 매우 간단합니다. 문제는 네트워크 클래스에서 빈 생성자를 삭제하는 Proguard입니다.

@Keep 
public MyClass(){ 
//do not delete 
} 
:

-keep public class com.example.network.** 

2) 또한 기본 빈 생성자에서 @Keep의 말뭉치 주석을 추가 :

1) 그래서, 난이 proguard-rules.pro에 추가