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

Android应用开发:Google Places API仅开发者本人可运行问题求助

解决Google Places API仅开发者本人能运行的问题

这问题我太熟了!结合你之前Google Maps API的解决经验,显然这次Google Places API的问题根源也是API密钥的权限配置,而且大概率是密钥绑定了开发者个人的设备SHA-1指纹。

问题原因拆解

只有编写者能正常运行的核心原因:

  • 编写者在Google Cloud控制台配置Places API密钥时,仅添加了自己设备的SHA-1指纹+应用包名的绑定规则;
  • 其他团队成员的设备指纹不在密钥的允许访问列表中,导致Places API请求被Google服务器拒绝,最终引发Activity崩溃。

分步解决方案

1. 每个成员获取自己设备的SHA-1指纹

两种简单方式:

  • Android Studio可视化操作:打开右上角Gradle面板 → 找到你的app模块 → 展开Tasks→android→ 双击运行signingReport,在控制台输出中找到SHA1字段;
  • 命令行方式(默认debug密钥库):
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    

2. 更新Google Cloud控制台的密钥配置

登录Google Cloud控制台,按以下步骤操作:

  • 进入「API和服务」→「凭据」,找到你的Places API密钥;
  • 在「应用限制」区域,选择「Android应用」,然后点击「添加项目」,输入每个成员的SHA-1指纹 + 应用包名(包名必须和AndroidManifest.xml中的package字段一致);
  • 切换到「API限制」区域,确保已勾选「Places API」(别漏选!很多时候会只开了Maps API而忽略Places)。

3. 本地密钥隔离(避免硬编码冲突)

为了避免团队成员共用密钥,建议用本地配置文件存储个人密钥:

  • 在项目根目录的local.properties文件中添加:
    GOOGLE_PLACES_API_KEY=你的个人Places API密钥
    
  • 在app/build.gradle中读取该配置并注入到BuildConfig:
    android {
        // 其他配置...
        buildTypes {
            debug {
                buildConfigField "String", "PLACES_API_KEY", "\"${properties.getProperty("GOOGLE_PLACES_API_KEY")}\""
            }
            release {
                buildConfigField "String", "PLACES_API_KEY", "\"${properties.getProperty("GOOGLE_PLACES_API_KEY")}\""
            }
        }
    }
    
  • 代码中通过BuildConfig.PLACES_API_KEY引用密钥,比如在refreshPlacesData方法里替换硬编码的密钥。

崩溃点验证

你提到的public void refreshPlacesData...方法中,大概率是调用Places API的请求(比如地点搜索、详情获取)触发了权限拒绝。让团队成员运行时查看Logcat,搜索Places或403关键词,会看到类似API key not valid. Please pass a valid API key.的错误日志,这就能确认是密钥权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:29:23