我使用的是谷歌REST API V3连接我的Android应用程序,以谷歌驱动器。当我没有Proguard的运行(minifyEnabled = FALSE),一切都很好。然而,当我使proguard的错误的REST API方法被调用。当我打电话Drive.Files.get()。在驱动器根目录别名“根”执行我得到的结果为Drive.Files.list()执行。当我禁用“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检查我仍然可以看到重命名的成员,国际海事组织shoudl一直“养”类。例如:
com.google.api.client.auth.oauth.OAuthParameters - > com.google.api.client.auth.oauth.OAuthParameters:java.security.SecureRandom中随机 - > 1 com.google.api.client.auth.oauth。 OAuthSigner签名者 - >一个java.lang.String回调 - >乙java.lang.String中consumerKey - >çjava.lang.String中的随机数 - > d java.lang.String中境界 - >电子
我还以为“-keep类com.google。**”本来可以避免吗?
任何想法如何解决这一问题?
提前致谢,
你需要
-keep class com.google.** { *;}
和
-keep class com.fasterxml.** { *;}
您也可以尝试让从SDK少。这些规则是非常广泛的。
在我而言,我不得不把这些保留:
-keep class br.project.pine.** { *;}
-keep class com.google.api.services.drive.** { *;}
提示:当在调试模式下能够缩小,注意logcat的。它可以帮助你找出真正缺少的包/类/属性。
这一次为我工作:
-keepclassmembers class * {
@com.google.api.client.util.Key <fields>;
}
正如所看到的谷歌官方样品中: