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

如何公开Android Studio项目至GitHub且不开放Firebase数据库访问权限?

如何公开Android项目同时保护Firebase数据库?

嗨,我来帮你搞定这个问题!要公开你的Android项目,同时不让外人碰你的Firebase数据库,核心就是把敏感配置、权限和代码彻底隔离开,下面是一步步的实操方案:

1. 彻底移除Git中的Firebase配置文件

你的google-services.json里包含了Firebase项目的敏感标识,绝对不能出现在公开仓库里:

  • 首先,把这个文件从Git的追踪列表中移除(如果已经提交过的话):
    git rm --cached app/google-services.json
    
  • 然后在项目根目录的.gitignore文件里添加一行,确保以后不会再误提交:
    app/google-services.json
    
  • 最后,创建一个示例配置文件google-services.example.json,填一些占位值,比如把真实的项目ID、API密钥换成类似YOUR_PROJECT_ID的标记,再加上注释告诉其他用户:需要自己创建Firebase项目,生成对应的配置文件替换这个示例。

2. 收紧Firebase数据库的安全规则

既然你的项目不需要用户认证,那就得靠安全规则来过滤非法访问:

  • 最简单的方式是基于设备ID白名单:在代码里获取你家里设备的唯一ID,然后在Firebase控制台的数据库规则里设置只允许这些ID的请求:
    {
      "rules": {
        ".read": "request.resource.data.deviceId in ['你的设备ID1', '你的设备ID2']",
        ".write": "request.resource.data.deviceId in ['你的设备ID1', '你的设备ID2']"
      }
    }
    
  • 另外,你也可以结合应用的包名和SHA-1证书指纹来限制访问(不过这个能被伪造,建议和设备ID结合用):
    {
      "rules": {
        ".read": "request.auth == null && request.app.packageName == '你的应用包名' && request.app.sha1 == '你的应用SHA-1指纹'",
        ".write": "request.auth == null && request.app.packageName == '你的应用包名' && request.app.sha1 == '你的应用SHA-1指纹'"
      }
    }
    
  • 一定要在Firebase控制台的“规则模拟器”里测试这些规则,确保只有你的设备/应用能正常读写,其他人的请求都会被拒绝。

3. 清理代码中的硬编码敏感值

检查整个项目代码,把所有直接写死的敏感信息(比如Firebase数据库URL、API密钥)都替换掉:

  • 可以用local.properties文件来存储这些敏感值,然后在build.gradle里读取并注入到BuildConfig中:
    比如在local.properties里加:
    FIREBASE_DB_URL=https://your-real-db-url.firebaseio.com
    
    然后在app模块的build.gradle里添加:
    android {
        defaultConfig {
            buildConfigField("String", "FIREBASE_DB_URL", "\"${properties.getProperty("FIREBASE_DB_URL")}\"")
        }
    }
    
  • 最后把local.properties也加入.gitignore,代码里就用BuildConfig.FIREBASE_DB_URL来获取数据库地址。

4. 清除Git历史中的敏感信息

如果之前不小心把敏感文件或信息提交到Git历史里了,即使现在移除,别人还是能通过历史记录查到,这时候要用git filter-repo来彻底清理:

  • 安装git filter-repo后,运行命令移除历史中的google-services.json:
    git filter-repo --path app/google-services.json --invert-paths
    
  • 然后强制推送到GitHub(注意:这个操作会改写仓库历史,一定要先做好本地备份):
    git push origin main --force
    

做完以上所有步骤后,先在本地测试你的应用,确保家里的设备还能正常控制,然后再把GitHub项目从私有改成公开就没问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:31:20