【发布时间】:2016-11-02 11:21:22
【问题描述】:
我正在使用 Google Rest API v3 将我的 Android 应用程序连接到 Google Drive。当我在没有 Proguard (minifyEnabled=false) 的情况下运行时,一切都很好。但是,当我启用 proguard 时,会调用错误的 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.**
当我签入生成的 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 nonce -> d java.lang.String 领域 -> e
我会认为“-keep class com.google.**”会避免这种情况?
知道如何解决这个问题吗?
提前致谢,
【问题讨论】:
-
你修好了吗?我面临同样的问题。知道的请帮忙。谢谢
-
是的,请参阅我 2016 年 11 月 2 日的最后一条评论“我能够缩小范围......”
标签: android google-drive-api android-proguard