混淆后无法启动到youtube的实时流式传输

时间:2016-10-10 09:57:29

标签: android android-youtube-api android-proguard

我有以下代码在混淆之前正常工作

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.**

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

找到正确答案here

我需要保留来自混淆的com.google.api.client.util.Key批注。

-keepclassmembers class * {
  @com.google.api.client.util.Key <fields>;
}
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

非常感谢。