2

AndroidアプリでGoogleドライブ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(); --executeメソッドは例外を出します:

java.lang.IllegalArgumentException:アクセス可能なデフォルトコンストラクタがないため、com.google.abaaeクラスの新しいインスタンスを作成できません

したがって、コードのこの部分では、フォルダーを検索して挿入することはできません。この例外は、アプリがプロダクションキーによって署名されている場合にのみ表示されます。デバッグキーを使用すると、完璧に機能します。

何か案は?

4

1 に答える 1

0

解決しました。Proguardが「アクセス可能なデフォルトコンストラクターがない」理由でした

ProGuardツールは、未使用のコードを削除し、意味的にあいまいな名前のクラス、フィールド、およびメソッドの名前を変更することにより、コードを縮小、最適化、および難読化します。

ProGuardは、アプリケーションをリリースモードでビルドした場合にのみ実行されます

ProGuard

于 2013-02-12T22:11:28.063 に答える