You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin上传Google Drive失败:java.lang.IllegalArgumentException: key error

问题分析与解决方案

可能原因1:ProGuard/R8混淆破坏Google Drive SDK类

Release版本默认开启代码混淆,而Google Drive客户端类依赖反射或特定字段、方法实现功能,混淆会破坏这些逻辑,最终抛出密钥相关异常。

解决方法

在项目的proguard-rules.pro文件中添加Google Drive SDK的混淆保留规则:

# 保留Google Drive及相关API类不被混淆
-keep class com.google.api.services.drive.** { *; }
-keep class com.google.api.client.** { *; }
-keep class com.google.auth.** { *; }
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

若使用R8压缩工具,需确保上述规则被正确加载,同时检查build.gradle的release构建块中混淆配置是否正常启用。

可能原因2:Release版本SHA1未配置到Google Cloud Console

Debug和Release版本通常使用不同的签名密钥,即便你已配置Debug的SHA1,也可能遗漏了Release版本的密钥信息,导致OAuth身份验证失败。

解决方法

  1. 获取Release版本的SHA1值:
    • 通过Android Studio:打开Build > Generate Signed Bundle/APK,选择已有的Release密钥库,在弹窗中查看SHA1值。
    • 通过命令行:
      keytool -list -v -keystore 你的Release密钥库路径 -alias 密钥别名
      
  2. 登录Google Cloud Console,找到对应OAuth 2.0客户端ID,添加该Release的SHA1值并保存,等待1-5分钟让配置生效。

可能原因3:google-services.json配置不匹配Release变体

若项目使用多构建变体,google-services.json可能仅包含Debug版本的客户端信息,导致Release版本无法正确读取OAuth配置。

解决方法

  1. 从Google Cloud Console下载包含Release SHA1信息的最新google-services.json文件。
  2. 将文件放置在app/src/release目录下(无此目录则创建),确保Release构建变体使用对应配置。

额外排查步骤

  • 检查Release构建的build.gradle配置,确认未禁用Google Drive所需权限(如INTERNET、GET_ACCOUNTS等)。
  • 执行Build > Clean Project后再Build > Rebuild Project,清理构建缓存避免配置冲突。

内容的提问来源于stack exchange,提问作者memical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:42:42