2014-04-18 3 views
7

. 내 Model 객체에 enum을 추가했습니다. 열거 형을 추가 한 후 내 응용 프로그램이 충돌하기 시작했습니다. runProguard를 false로 만들면 모든 것이 잘 동작합니다. 프로그램이 사실 일 때 인터넷에서 문제를 해결할 수있는 모든 것을했습니다. 그러나 여전히 운이 없다.앱 내가 데이터를 파서 내 안드로이드 응용 프로그램에서 GSON</strong><strong>을 사용하고

이미 난독 규칙 파일에

-keep class com.google.** { *; } 

-keepattributes *Annotation* 
-keepattributes Signature 

-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } 

열거 물건 예를 들어 다음과 같은 일을 한

:

public enum TypeX { 
@SerializedName("live") 
LIVE, 

@SerializedName("upcoming") 
UPCOMING, 

@SerializedName("replay") 
REPLAY; } 

내 스택 추적이은을 사용하여 해결해야

java.lang.AssertionError 
     at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init>(Unknown Source) 
     at com.google.gson.internal.bind.TypeAdapters$26.create(Unknown Source) 
     at com.google.gson.Gson.getAdapter(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(Unknown Source) 
     at com.google.gson.Gson.getAdapter(Unknown Source) 
     at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(Unknown Source) 
     at com.google.gson.Gson.getAdapter(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(Unknown Source) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(Unknown Source) 
     at com.google.gson.Gson.getAdapter(Unknown Source) 
     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(Unknown Source) 
     at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(Unknown Source) 
     at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(Unknown Source) 
     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(Unknown Source) 
     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(Unknown Source) 
     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(Unknown Source) 
     at com.google.gson.Gson.toJson(Unknown Source) 
     at com.google.gson.Gson.toJson(Unknown Source) 
     at com.google.gson.Gson.toJson(Unknown Source) 
     at com.google.gson.Gson.toJson(Unknown Source) 
     at com.theice.gsonapp.app.MainActivity.a(Unknown Source) 
     at com.theice.gsonapp.app.MainActivity.onCreate(Unknown Source) 
     at android.app.Activity.performCreate(Activity.java:5231) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

답변

4

을 다음 규칙 :

-keepclassmembers enum * { *; } 

또는 사용 다음

-keepclassmembers enum com.your.package.** { *; } 

관련 대답 : https://stackoverflow.com/a/30167048/4758255

+0

이 나에게 정답이다. proguard에 다음 줄을 추가하면 문제가 해결됩니다. -keepclassmembers enum * {*; } –

관련 문제