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

Compose MultiPlatform中Firebase Auth无法使用的解决方案咨询

在Compose MultiPlatform中搞定Firebase Auth的正确姿势

1. 先把依赖配置弄对

你之前的依赖配置有问题——dev.gitlive的Firebase库是拆分成通用层和平台层的,不能直接在commonMain加单一的firebase-auth依赖,得按下面这么改:

首先在lib.versions.toml里统一版本并拆分依赖:

[versions]
firebase = "1.12.0" # 换成最新的稳定版即可

[libraries]
firebase-auth-common = { group = "dev.gitlive", name = "firebase-auth-common", version.ref = "firebase" }
firebase-auth-android = { group = "dev.gitlive", name = "firebase-auth-android", version.ref = "firebase" }
firebase-auth-ios = { group = "dev.gitlive", name = "firebase-auth-ios", version.ref = "firebase" }

然后在模块级的build.gradle.kts里给不同sourceSet加对应的依赖:

sourceSets {
    val commonMain by getting {
        dependencies {
            implementation(libs.firebase.auth.common)
        }
    }
    val androidMain by getting {
        dependencies {
            implementation(libs.firebase.auth.android)
        }
    }
    val iosMain by getting {
        dependencies {
            implementation(libs.firebase.auth.ios)
        }
    }
}

2. 给各平台做Firebase初始化

Firebase必须在每个平台上单独初始化,用KMP的expect/actual来实现跨平台调用:

通用层(commonMain)

先定义一个期望的初始化函数:

expect fun initializeFirebase()

Android端(androidMain)

实现这个初始化函数,还要记得配置google-services.json和Google服务插件:

import dev.gitlive.firebase.Firebase
import androidx.compose.ui.platform.LocalContext

actual fun initializeFirebase() {
    Firebase.initialize(LocalContext.current)
}

同时在Android模块的build.gradle.kts里加上Google服务插件:

plugins {
    id("com.android.application")
    id("com.google.gms.google-services") // 这个必须加
}

最后把下载好的google-services.json放到src/main/目录下。

iOS端(iosMain)

同样实现初始化函数,还要把GoogleService-Info.plist加到Xcode项目里:

import dev.gitlive.firebase.FirebaseApp

actual fun initializeFirebase() {
    FirebaseApp.configure()
}

注意GoogleService-Info.plist要设置成"Copy if needed",不然打包的时候会找不到。

3. 在通用代码里用Firebase Auth

现在你可以在commonMain里直接用GitLive封装的通用API了,不用管平台差异:

import dev.gitlive.firebase.auth.auth
import dev.gitlive.firebase.auth.FirebaseAuth

// 获取Auth实例
val auth: FirebaseAuth = Firebase.auth

// 举个例子:邮箱密码登录
suspend fun signIn(email: String, password: String) {
    auth.signInWithEmailAndPassword(email, password)
}

踩坑排查

  • commonMain同步失败:大概率是没拆分依赖,用了单一的firebase-auth而不是firebase-auth-common,检查版本是否统一。
  • 导不出FirebaseAuth:别导Android专属的com.google.firebase.auth.FirebaseAuth,要导dev.gitlive.firebase.auth.FirebaseAuth,这才是通用层的类。
  • 初始化报错:检查各平台的配置文件有没有放对,插件和依赖是不是都加全了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:35:02