Unity集成Firebase后上传Oculus商店触发GCP API密钥硬编码警告问询
警告触发原因
- Firebase插件集成时默认会导入
google-services.json(Android端)、GoogleService-Info.plist(iOS端)配置文件,文件内包含明文硬编码的GCP API密钥、客户端ID等敏感信息 - 即使VR版本未调用Firebase相关功能,只要插件和配置文件残留在项目中,Unity构建时会将这类配置文件打包进APK/ABB的资源目录,或是被Firebase初始化脚本编译为常量字符串写入安装包
- Oculus Quest商店的审核扫描工具会识别安装包内明文存在的GCP官方格式API密钥,因此触发硬编码风险警告
修复方案
方案1:VR版本完全不需要Firebase能力
- 基于Unity的构建变体功能,给Oculus VR构建目标单独设置插件过滤规则,打包时完全排除所有Firebase相关的
.aar、.dll插件文件 - 编写预处理构建脚本,在VR版本构建前自动删除项目内的
google-services.json、GoogleService-Info.plist配置文件,避免敏感信息被打包 - 用平台编译宏包裹所有Firebase相关调用代码,示例规则:
#if !OCULUS_VR_BUILD // 仅非VR版本执行的Firebase初始化、登录逻辑 FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { // 后续初始化逻辑 }); #endif
方案2:需保留Firebase插件同时适配双版本
- 剥离配置文件内的硬编码敏感信息,GCP API密钥、客户端ID等参数改为运行时从自有业务后端接口动态拉取,不要明文存储在安装包内
- 给GCP API密钥添加应用访问限制,仅允许你的应用包名、对应签名证书调用接口,即使密钥泄露也不会被恶意滥用
- 对Firebase初始化逻辑做分支判断,VR场景启动时完全跳过Firebase初始化流程,避免密钥相关字符串出现在VR版本的运行时内存中
内容的提问来源于stack exchange,提问作者Gubendran_Vins
相关产品推荐
相关产品推荐

