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

Android应用迁移Google Drive V3后,签名APK创建文件显示Untitled求助

解决思路:调试正常但签名APK创建Drive文件显示Untitled的问题

这种场景我之前也碰到过,核心问题几乎都是签名认证或代码混淆导致的API请求参数丢失,下面分点说排查和解决步骤:

1. 优先检查Google Cloud Console的正式签名指纹配置

Android Studio调试用的是默认调试签名密钥,而你打包发布用的是自己的正式签名密钥,这两个密钥的SHA-1指纹完全不同。Google Drive API的OAuth客户端ID是和包名+SHA-1指纹绑定的,如果没配置正式指纹,发布版应用的API请求会被视为未授权的第三方请求,导致你设置的name等参数无法被正常处理,最终Drive返回默认的"Untitled"。

解决步骤:

  • 获取正式签名的SHA-1指纹:
    • 方法1:打开Android Studio,点击Build > Generate Signed Bundle/APK,选择你的密钥库文件,点击Show SHA-1即可查看;
    • 方法2:用keytool命令执行:
      keytool -list -v -keystore your_keystore_file.jks -alias your_key_alias
      
      输入密钥库密码后,就能看到SHA-1值。
  • 配置到Google Cloud Console:
    • 进入你的项目,导航到API和服务 > 凭据;
    • 找到你应用对应的OAuth 2.0客户端ID(类型为Android),点击编辑;
    • 在Android应用区域,添加刚才获取的正式SHA-1指纹,确保包名和你应用的包名完全一致;
    • 保存配置,等待5-10分钟让配置生效。

2. 检查ProGuard/R8混淆规则

如果你的发布版开启了代码混淆,很可能Gson无法正确序列化Drive API的模型类(比如com.google.api.services.drive.model.File),导致你设置的name字段没有被正确传到请求体里,Drive自然会生成默认名称。

添加以下混淆规则到你的proguard-rules.pro文件中:

# 保留Google Drive API相关类不被混淆
-keep class com.google.api.services.drive.** { *; }
-keep class com.google.api.client.** { *; }
-keep class com.google.oauth.** { *; }
# 保留Gson序列化需要的字段
-keepclassmembers class * extends com.google.api.client.json.GenericJson {
  *;
}

3. 额外验证点

  • 对比调试版和发布版的API请求:用Android Studio的Network Inspector抓包,看发布版请求体里是否真的包含name和mimeType参数;
  • 临时修改setFields为*(仅测试用):把setFields("id, name")改成setFields("*"),看返回的文件对象里name字段是否正确,排除字段过滤导致的显示问题;
  • 确认setApplicationName的一致性:虽然这个影响较小,但确保调试和发布版的应用名称一致,避免服务端的识别问题。

按照这几个步骤排查,基本能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:51:07