[KMP] 02 - 如何引用 Firebase SDK

4 min

KMP SDK 種類

在 KMP 中專案要引入 SDK,有兩種方式

  1. 官方針對 Kotlin Multiplatform 有出對應的 SDK
  2. SDK 只有針對各個平台出對應的 SDK

本文要介紹的是第二種,例如 Firebase 只有針對 AndroidiOS 出對應的原生 SDK,這種方式需要在 Android 與 iOS 專案中分別引入 SDK。


如何引用 SDK

Android Platform

在 Android 上相對簡單,因為與原本開發 Android 的流程極為類似。

SDK Version

首先我們要先決定要安裝哪一個版本的 Firebase SDK,我們可以到 Firebase 的官網來查;文章內有說到,如果要安裝 Firebase SDK,需要先安裝 Google Gradle Plugin,所以最後一共會有兩個 SDK 版本:

  • Google Gradle Plugin - 用來協助存取 google-services.json
  • Firebase Bom SDK - 用來管理 Firebase SDK 的版本

沒有特殊需求就選擇當下的最新版本就好。

Gradle Version Catalog

新版本的 Gradle 建議在一份 toml 的檔案內管理所有 SDK 的版本,這樣可以避免版本不一致的問題。 找到 KMP 專案下的 gradle/libs.versions.toml,新增 Firebase SDK 的版本。

[versions]
...
google-services = "4.4.4"
firebase-bom = "34.7.0"

[libraries]
...

# Firebase SDK,自行添加需要使用到的 lib
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" }
firebase-analytics = { module = "com.google.firebase:firebase-analytics" }
firebase-remote-config = { module = "com.google.firebase:firebase-config" }

[plugins]
...
google-services = { id = "com.google.gms.google-services", version.ref = "google-services" }

# 如果覺得到時候要加入的 lib 有點多,可以先在這邊綁定為 bundle 日後擴充只要改這邊就好
[bundles]
...
firebase-bundle = [
    "firebase-analytics",
    "firebase-remote-config"
]

定義好版本後,記得先按下一次 Gradle Sync Changes,這樣 Gradle 才會重新解析版本。 Gradle Sync Changes

Gradle 設定

開啟專案底下的 build.gradle.kts,在 plugins 區塊下加入 Google Gradle Plugin。

plugins {
    ...
    alias(libs.plugins.google.services) apply false
}

開啟 composeApp modulebuild.gradle.ktsplugins 區塊下加入 Google Gradle Plugin。

plugins {
    ...
    alias(libs.plugins.google.services)
}

開啟 shared module 的 build.gradle.ktssourceSets 區塊下,新增 androidMain

sourceSets {
    ...

    androidMain.dependencies {
        implementation(project.dependencies.platform(libs.firebase.bom))
        implementation(libs.bundles.firebase.bundle)
    }
}

iOS Platform

開啟 Xcode,打開專案底下這個路徑的專案檔:iosApp/iosApp.xcodeproj,在專案按下右鍵選擇 Add Package DependenciesAdd Package Dependencies

透過輸入 firebase github 的位置,這樣可以快速找到 firebase sdk,然後直接按下 Add Package

NOTE

https://github.com/firebase/firebase-ios-sdk

Add Firebase SDK
Add Firebase SDK

Xcode 會 Checkout SDK 並且驗證 Xcode Checkout SDK

完全 Checkout 後,會詢問你需要加入的 product 有哪些,要加入的就在 Add to Target 欄位選擇 ios App,完成選擇後就按 Add PackageXcode Add Package

全部加入後,可以先關閉 Xcode,回到 IntelliJ IDEA,應該會發現有錯誤。

Swift Package dependencies resolution failed with exit code 74:

2025-12-16 14:41:58.260 xcodebuild[32582:1401171] Writing error result bundle to /var/folders/3_/g4pw0jys2dd8w_h7n6bqbsxc0000gq/T/ResultBundle_2025-16-12_14-41-0058.xcresult

xcodebuild: error: Could not resolve package dependencies:

  Couldn’t get revision ‘12.7.0^{commit}’:

只要透過 IDE 右上的 Sync Gradle With Swift Package Manager 就可以解決,完成後左邊的 iosApp 底下就能看到 Swift Package Manager 安裝的 SDK。 Sync Swift Package Manager Changes iosAPP SPM

驗證

相較於 Android,iOS 在 SDK 安裝上為了確保真的有安裝完成,我們來測試 Firebase 是否能正確的初始化成功。 我預設大家已經完成 Firebase 在 iOS 平台上的基本設定。

我們直接在 JetBrains IntelliJ IDEA 中打開 iosAppiOSApp.swift,沒錯我們可以直接在這寫 Swift。 調整 Code 為以下:

import SwiftUI
import FirebaseCore

@main
struct iOSApp: App {

    init() {
        FirebaseApp.configure()
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

完成後,我們直接選擇 iosAPP 讓他編譯,不管有沒有錯誤都代表 Firebase SDK 已經安裝完成。 iosAPP Compile

像我的出現以下錯誤:

*** Terminating app due to uncaught exception 'com.firebase.core', reason: '`FirebaseApp.configure()` could not find a valid GoogleService-Info.plist in your project. Please download one from https://console.firebase.google.com/.'

這樣代表 Firebase SDK 已經安裝完成,只是還沒有設定 GoogleService-Info.plist。

Comments

Loading comments...