3.1 十个高频问题门诊(上):接入与配置类
先说结论:接入期的坑,八成出在对不上
Firebase 接入阶段的问题,很少是真正的疑难杂症,绝大多数是两边没对齐:本地配置文件和控制台不一致、包名对不上、指纹没配齐。这一节挑五个最高频的问题,按症状、病因、处方的门诊格式逐一处理。
五问门诊:症状、病因与处方
问题一:配置文件放错位置或没刷新
症状:项目一启动就初始化失败;或者本地跑得好好的,换台机器、换个分支就报配置缺失类错误。
病因:google-services.json(Android)或 GoogleService-Info.plist(iOS)没有放进约定目录;或者文件是旧的——控制台上后来又开了新服务、加了新指纹,本地文件没重新下载,两边信息已经对不上了。
| 平台 | 配置文件 | 应放位置 | 常见遗漏 |
|---|---|---|---|
| Android | google-services.json | app 模块目录下 | 对应 gradle 插件没有启用 |
| iOS | GoogleService-Info.plist | 工程根目录并加入 target | 文件没有勾选对应构建目标 |
处方: - 确认文件在约定目录,且被构建系统正确识别 - 回到控制台重新下载最新配置文件,覆盖本地旧文件 - 改完配置后做一次完整清理构建,而不是增量编译
检查清单:文件在不在约定目录、是不是最新下载的版本、有没有加入构建目标、有没有重新 clean build。四项全过再谈别的。
问题二:包名对不上,初始化直接失败
症状:启动即报找不到默认 App 或配置不匹配类错误,代码一行没改,换个工程就复发。
病因:控制台注册的 Android 包名或 iOS Bundle ID 与工程里实际的值不一致。常见于中途改过包名、用了不同 flavor 或 scheme,却只在控制台注册了一个主包名。
处方: - 对照三处:工程构建配置里的实际包名、配置文件里的 package_name、控制台应用设置里的包名,三者必须一致 - 多 flavor 项目把每个变体都注册进控制台,或在一个应用下绑定多个包名 - 实在对不上就删掉重新注册,然后重新下载配置文件
问题三:SHA 指纹没配,Google 登录失败(Android)
症状:其他功能一切正常,唯独 Google 登录走到一半报异常或静默失败。
病因:签名指纹没有录入控制台。调试签名和发布签名的指纹并不相同,很多人只配了其中一个,换个环境登录就断了。
处方: - 用签名工具分别取调试与发布密钥的 SHA-1 指纹,有需要时连 SHA-256 一起取 - 到控制台项目设置里逐个添加指纹,保存成功后重新下载 google-services.json - 如果还接入了依赖指纹的服务,指纹缺失的影响面会更大,一并补齐
检查清单:指纹是否覆盖了所有签名环境、是否保存成功、配置文件是否重新下载、真机上的完整登录流程是否重测过。
问题四:iOS 初始化顺序与 plist 的时序问题
症状:iOS 上偶尔出现配置读取不到,或某些服务在启动早期就崩溃,复现时机飘忽。
病因:GoogleService-Info.plist 的加载时机和使用时机错位——比如在 Firebase App 配置完成之前就去用某个服务;或者项目用了多个 target,每个 target 的 plist 没有各自就位。
处方: - 把 Firebase 初始化放在 App 启动最早期,且全工程只做一次 - 用 App 对应的 plist 名称显式初始化,避免依赖隐式查找 - 多 target 项目逐个确认每个 target 引用了正确的 plist 副本
问题五:Web 端 v8 与 v9 两套写法混着用
症状:照旧教程写的代码跑不起来,或打包体积异常,运行时报某个方法不存在。
病因:Web SDK 存在两套 API 风格:老的命名空间式和新的模块化函数式。两套混用,或复制来的示例分属不同版本,就会出现各种对不上的调用。
处方: - 先确认项目初始化用的是哪种风格,全项目保持统一 - 从旧写法迁移到新写法时,先用官方兼容层过渡,跑稳后再彻底切换 - 查文档时先看版本标注,示例代码所属版本要和自己项目的一致
本节速查表
| 症状 | 最可能病因 | 第一步动作 |
|---|---|---|
| 启动即初始化失败 | 配置文件缺失或过期 | 重新下载并放到约定目录 |
| 配置不匹配类报错 | 包名不一致 | 三处包名逐一对照 |
| 仅登录失败 | SHA 指纹缺失 | 补齐指纹并重下配置 |
| iOS 启动早期崩溃 | 初始化时序错误 | 提前且唯一地初始化 |
| 方法不存在类报错 | v8 与 v9 混用 | 统一 API 风格 |
接入期的原则只有一条:让控制台、配置文件、工程三方完全一致。对齐了,这一类问题基本绝迹。
