2

我在 android 应用程序中使用 Google Drive API。当应用程序由 debug.keystore 签名时效果很好。但是,如果我通过生产密钥对其进行签名,我会遇到奇怪的异常。

搜索和创建文件夹的代码:

com.google.api.services.drive.Drive.Files.List request = 
    service.files().list()
        .setQ("'" + folderId + "' in parents " +
            "and mimeType='application/vnd.google-apps.folder' " +
            "and trashed=false " +
            "and title='" + title + "'");
FileList files = request.execute();
if (files.getItems().size() == 0) {
    ParentReference parentReference = new ParentReference();
    parentReference.setId(folderId);
    parent.add(parentReference);
    File body = new File();
    body.setTitle(title);
    body.setMimeType("application/vnd.google-apps.folder");
    body.setParents(parent);
    File file = service.files().insert(body).execute();
    folderId = file.getId();
} else {
    folderId = files.getItems().get(0).getId();
}

FileList 文件 = request.execute(); -- 执行方法给出异常:

java.lang.IllegalArgumentException:无法创建类 com.google.abaae 的新实例,因为它没有可访问的默认构造函数

所以这部分代码不能搜索和插入文件夹。仅当应用程序由生产密钥签名时才会出现此异常。使用调试密钥,它可以完美运行。

有任何想法吗?

4

1 回答 1

0

解决了。Proguard 是“没有可访问的默认构造函数”的原因

ProGuard 工具通过删除未使用的代码并用语义模糊的名称重命名类、字段和方法来缩小、优化和混淆您的代码。

ProGuard 仅在您以发布模式构建应用程序时运行

ProGuard

于 2013-02-12T22:11:28.063 回答