Java Android GoogleCredential调试与发布

Java Android GoogleCredential调试与发布,java,android,android-studio,google-oauth,google-cloud-storage,Java,Android,Android Studio,Google Oauth,Google Cloud Storage,我试图阅读我的GCS数据,但我看到了一个有趣的行为。当通过Android Studio作为调试变量运行我的应用程序时,我能够下载对象。当我创建一个签名的APK或作为发行版变体运行时,我不再能够下载对象并收到404错误 这是我的授权方式: GoogleCredential googleCredential = null; JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); HttpTransport httpTranspo

我试图阅读我的GCS数据,但我看到了一个有趣的行为。当通过Android Studio作为调试变量运行我的应用程序时,我能够下载对象。当我创建一个签名的APK或作为发行版变体运行时,我不再能够下载对象并收到404错误

这是我的授权方式:

GoogleCredential googleCredential = null;
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = AndroidHttp.newCompatibleTransport();

/** Authorizes the installed application to access user's protected data. */
public GoogleCredential authorize() throws Exception {
    String p12Password = "****";
    String keyAlias = "****";
    KeyStore keystore = KeyStore.getInstance("PKCS12");
    keystore.load(getResources().openRawResource(R.raw.gcskeystore), p12Password.toCharArray());

    PrivateKey privateKey = (PrivateKey)keystore.getKey(keyAlias, p12Password.toCharArray());

    Set<String> scopes = new HashSet<String>();
    scopes.add(StorageScopes.DEVSTORAGE_READ_WRITE);

    String emailAddress = "********@developer.gserviceaccount.com";

    GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId(emailAddress)
            .setServiceAccountPrivateKey(privateKey)
            .setServiceAccountScopes(scopes)
            .build();

    return credential;
}
当我收到一个错误时:

bpr@46096240
由于问题发生在创建签名版本时,我认为我的proguard规则有问题,但我添加的唯一一行是:

-dontwarn sun.misc.*
希望有人以前见过这种行为!任何帮助都将不胜感激


珍妮

我能够解决我的问题。我更深入地研究了proguard规则。进行此更新解决了我的问题:

# Needed to keep generic types and @Key annotations accessed via reflection

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

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

# Needed by Guava
# See https://groups.google.com/forum/#!topic/guava-discuss/YCZzeCiIVoI

-dontwarn sun.misc.Unsafe
-dontwarn com.google.common.collect.MinMaxPriorityQueue

# Needed by google-http-client-android when linking against an older platform version

-dontwarn com.google.api.client.extensions.android.**

# Needed by google-api-client-android when linking against an older platform version

-dontwarn com.google.api.client.googleapis.extensions.android.**
# Needed to keep generic types and @Key annotations accessed via reflection

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

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

# Needed by Guava
# See https://groups.google.com/forum/#!topic/guava-discuss/YCZzeCiIVoI

-dontwarn sun.misc.Unsafe
-dontwarn com.google.common.collect.MinMaxPriorityQueue

# Needed by google-http-client-android when linking against an older platform version

-dontwarn com.google.api.client.extensions.android.**

# Needed by google-api-client-android when linking against an older platform version

-dontwarn com.google.api.client.googleapis.extensions.android.**