2014-04-18 38 views
7

我使用GSON在我的Android应用分析器数据。我在模型对象中添加了一个枚举。添加一个枚举后,我的应用程序开始崩溃。当我跑runProguard假一切正常。我所做的一切,我能找到互联网上解决问题时的程序是真实的。但仍然没有运气。应用程序,当我运行GSON(其中使用ENUM)Proguard的崩溃

我已经做了以下事情proguard相关规则文件

-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枚举* {*; } –

相关问题