如何解决与谷歌驱动器REST API Proguard的问题

问题描述 投票:1回答:2

我使用的是谷歌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。**”本来可以避免吗?

任何想法如何解决这一问题?

提前致谢,

android google-drive-sdk android-proguard
2个回答
4
投票

你需要

-keep class com.google.** { *;} 

-keep class com.fasterxml.** { *;}

您也可以尝试让从SDK少。这些规则是非常广泛的。


0
投票

在我而言,我不得不把这些保留:

-keep class br.project.pine.** { *;}
-keep class com.google.api.services.drive.** { *;}

提示:当在调试模式下能够缩小,注意logcat的。它可以帮助你找出真正缺少的包/类/属性。


0
投票

这一次为我工作:

-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

© www.soinside.com 2019 - 2024. All rights reserved.