Files.List为空,但仅在使用发布证书签名时才为空

时间:2013-10-03 06:00:56

标签: android google-drive-api

我遇到了Google Drive API for Android的一个令人愤怒的错误。具体来说,在从Google云端硬盘中展示"打开文件"对用户的UI,我使用以下代码查询文件夹中的文件:

String query = "'" + folderId + "' in parents and trashed = false";

Files.List request = service.files().list().setQ(query);

FileList files = request.execute();

java.util.List<File> items = files.getItems();  // Returns null!

当我直接从Eclipse运行此代码(即使用调试证书签名)时,没有问题。但是,当我使用我们的发布证书构建并运行已签名的APK时,对files.getItems()的调用将返回null。

奇怪的是,当getItems()返回null时,肯定会从Drive服务器返回数据,因为调用files.toString()会显示一堆Json,其中我已经识别了一些文件的文件名,所以我不认为问题是身份验证问题。

此外,在查询字符串中使用不同的folderIds似乎对toString()返回的Json没有任何影响。基于logcat中的积极GC活动,看起来服务器可能正在返回驱动器中的所有文件,特别是奇怪的是考虑到getItems()返回null。

请注意,使用调试证书签名时代码可以正常工作,因为我可以在我的应用程序中完美地浏览我的Google云端硬盘。

1 个答案:

答案 0 :(得分:0)

根据之前的评论:

Proguard在导出您签名的APK时会有什么机会?如果您依赖变量名称将JSON映射到POJO,则可能会在没有适当的Proguard排除/规则的情况下制动。查看project.properties文件并注明proguard.config=<file_name>形式的任何行。之后,导出另一个已签名的APK并重新测试。