android - 如何修复 Google Drive REST API 的 Proguard 问题

标签 android google-drive-api android-proguard

我正在使用 Google Rest API v3 将我的 Android 应用程序连接到 Google 云端硬盘。当我在没有 Proguard (minifyEnabled=false) 的情况下运行时,一切都很好。但是,当我启用混淆器时,会调用错误的 REST API 方法。当我在驱动器根别名“root”上调用 Drive.Files.get().execute 时,我得到了 Drive.Files.list().execute 的结果。当我禁用“minifyEnabled”时,我看到了正确的结果。这是控制运行 Proguard 的 build.gradle 部分:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

默认的 Proguard 文件是随 Android Studio 2.2 一起分发的未修改文件(不是优化版本)

这是我的 proguard-rules.pro 文件的内容

-keepattributes EnclosingMethod
-keepattributes InnerClasses
-dontoptimize

-keep class com.google.**
-keep class com.fasterxml.**
-dontwarn com.google.**

当我 checkin 生成的 mapping.txt 时,我仍然在 imo 应该“保留”的类中看到重命名的成员。例如:

com.google.api.client.auth.oauth.OAuthParameters -> com.google.api.client.auth.oauth.OAuthParameters: java.security.SecureRandom 随机 -> l com.google.api.client.auth.oauth.OAuthSigner 签名者 -> 一个 java.lang.String 回调 -> b java.lang.String consumerKey -> c java.lang.String 随机数 -> d java.lang.String 领域 -> e

我本以为“-keep class com.google.**”可以避免这种情况?

知道如何解决这个问题吗?

提前致谢

最佳答案

这个对我有用:

-keepclassmembers class * {
  @com.google.api.client.util.Key <fields>;
}

如谷歌官方示例所示:

https://github.com/google/google-api-java-client-samples/blob/master/tasks-android-sample/proguard-google-api-client.txt

关于android - 如何修复 Google Drive REST API 的 Proguard 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40378671/

相关文章:

android - 我如何告诉 multidex 保留 jar 属性文件?

android - findFragmentByTag 始终返回 null

java - 试图停止执行2秒钟

android - 在 NestedScrollView (Android Studio) 中启用中间滚动

google-apps-script - 列出 Google 云端硬盘上特定演示文稿/文档的所有共享用户

ruby - 如何使用服务帐户从 google drive api 下载文件?

android - AsyncTask RecyclerView NullPointerException

php - 如何使用 google docs api php 插入文本

android - 如何解决gradle警告:忽略匿名内部类的InnerClasses属性

java - 如何解决 Proguard 问题 - ArrayIndexOutOfBoundsException?