我有以下代码在混淆之前正常工作
YouTube.LiveBroadcasts.List liveBroadcastsRequest =
mYouTube.liveBroadcasts().list("id,snippet,contentDetails,status");
liveBroadcastsRequest.setMine(true);
liveBroadcastsRequest.setBroadcastType("persistent");
LiveBroadcastListResponse broadcastResponse = liveBroadcastsRequest.execute();
List<LiveBroadcast> broadcasts = broadcastResponse.getItems();
LiveBroadcast broadcast = broadcasts.get(0);
但是在具有混淆的发布版本中,代码的最后一行会抛出以下异常
java.lang.ClassCastException: com.google.api.client.util.ArrayMap cannot be cast to com.google.api.services.youtube.model.LiveBroadcast
我认为问题发生是因为我的混淆在某种程度上打破了google api中的gson反序列化,但是我找不到如何修改我的proguard规则以使其正常工作。
当前混淆规则
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.Unsafe
-keepattributes *Annotation*
-keep class com.google.** { *; }
-keep class com.google.api.services.youtube.model.** { *; }
-dontwarn com.google.**
任何帮助将不胜感激
答案 0 :(得分:1)
找到正确答案here
我需要保留来自混淆的com.google.api.client.util.Key批注。
-keepclassmembers class * {
@com.google.api.client.util.Key <fields>;
}
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
非常感谢。