【发布时间】:2015-10-07 22:25:01
【问题描述】:
我有一个使用 youtube.search.list 方法的 Android 应用。此应用程序在“调试”中和在“发布”中禁用 proguard 时工作正常。
当 proguard 开启 (minifyEnabled true) 时,当我迭代 SearchResult 类的列表时出现以下异常
com.google.api.client.util.ArrayMap cannot be cast to
com.google.api.services.youtube.model.SearchResult
我在 proguard-rules 中设置了以下规则(根据 cmets 在另一个问题“android proguard makes the youtube api oauth disabled?”中的建议)
-keep class com.google.api.** {
*;
}
以下是检索列表
youtube = new Youtube.builder(new NetHttpTransport(),
new JacksonFactory(),
request->{})
.setApplicationName("youtube-search")
.build();
search = youtube.search()
.list("id,snippet")
.setKey(DeveloperKey.DEVELOPER_KEY)
.setQ("test")
.setMaxResults(25);
SearchListResponse searchResponse = search.execute();
List<SearchResult> searchResultList = searchResponse.getItems()
下面的循环会导致错误发生
for (SearchResult r: searchResultList){
// program throws exception only in "RELEASE" with proguard on.
}
感谢任何见解。
【问题讨论】:
-
对我来说,我有 -keepattributes 签名但缺少 -keep class com.google.api.** { *; }
标签: android android-youtube-api youtube-data-api