克隆Bitbucket的Jetpack Compose应用在其他设备Firebase服务异常
我在Android Studio中开发了一款基于Jetpack Compose的应用,使用Firebase Auth和Firestore服务,本地运行一切正常。将项目上传至Bitbucket后,团队成员克隆仓库并使用同一账号密码登录时,应用一直处于加载状态,且Log/Run窗口无错误提示。
已尝试的操作:
- 在
AndroidManifest.xml中添加了互联网权限:<uses-permission android:name="android.permission.INTERNET" /> - 同步
build.gradle并确认依赖版本与原项目一致
怀疑点:Manifest中的包名未修改是否会导致该问题?
相关日志:
- Firebase初始化成功日志:
I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT] I/FirebaseInitProvider: FirebaseApp initialization successful - 执行认证操作时仅输出:
D/TrafficStats: tagSocket(98) with statsTag=0xffffffff, statsUid=-1
1. 包名不匹配确实是核心诱因
Firebase的Auth、Firestore等服务与应用包名、SHA-1/SHA-256签名指纹强绑定。如果团队成员运行的应用包名和你在Firebase控制台配置的不一致,或者他们的开发签名指纹未添加到Firebase项目中,会导致请求被静默拦截(无错误日志,仅卡在加载)。
解决步骤:
- 让成员检查本地
AndroidManifest.xml的package属性,确保和Firebase控制台注册的包名完全一致; - 若需用不同包名测试,在Firebase控制台项目设置中添加新应用(对应新包名),下载最新的
google-services.json替换到项目app/目录; - 成员通过
./gradlew signingReport命令获取本地开发环境的SHA-1指纹,添加到Firebase控制台对应应用的签名配置中。
2. 确认google-services.json配置正确
多数项目会把google-services.json加入.gitignore,如果成员克隆仓库后没有替换正确的配置文件,会导致Firebase服务无法正常通信。
解决步骤:
- 检查项目
.gitignore是否排除了该文件,若是,让成员从Firebase控制台下载对应应用的google-services.json,放到app/目录; - 打开该文件,确认
package_name字段和项目包名完全匹配。
3. 启用Firebase调试日志获取细节
当前日志仅显示初始化成功,没有认证相关的错误信息,可开启Firebase调试日志排查:
在应用启动时添加以下代码:
import com.google.firebase.FirebaseApp import com.google.firebase.database.FirebaseDatabase import com.google.firebase.auth.FirebaseAuth // 开启Firebase调试日志 FirebaseApp.getInstance().setLogLevel(com.google.firebase.Logger.Level.DEBUG) FirebaseDatabase.getInstance().setLoggingEnabled(true)
重新运行应用后,查看Logcat中FirebaseAuth或Firestore相关的警告/错误,比如请求超时、权限拒绝等信息。
4. 检查网络与代理环境
成员设备可能处于受限网络(如公司内网、代理),导致无法访问Firebase服务器:
- 切换到手机移动数据测试;
- 关闭Android Studio的代理设置后重试;
- 验证设备是否能正常访问Firebase相关域名(如
https://firebase.google.com)。
5. 确认Firebase账号与安全规则状态
检查Firebase控制台中该账号是否被禁用,同时确认Auth、Firestore的安全规则是否设置了限制(如IP白名单、设备验证),导致成员设备无法通过认证。
内容的提问来源于stack exchange,提问作者SthealtD

