Firebase 官方提供的Quick Start-Android 库的功能集讲解

项目整体定位

Firebase quickstart-android 是 Firebase 官方提供的 Android 端全功能示例项目,每个子模块对应 Firebase 的一个核心产品 / 功能,代码极简且可独立运行,目的是让开发者快速理解 Firebase 各功能的集成方式、核心 API 用法和实际效果。所有模块基于最新的 Firebase SDK 构建,适配 Android 主流版本,是新手入门 Firebase 最权威的参考。


核心模块功能详解(按使用频率排序)

一、身份认证类模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
auth 演示 Firebase Authentication 全流程 1. 邮箱 / 密码登录 / 注册2. 手机号验证码登录3. Google/Apple 第三方登录4. 匿名登录5. 账号注销 / 信息修改 应用内用户体系搭建(登录 / 注册)
auth-phone 专注手机号认证(独立模块,更详细) 1. 手机号验证码发送 / 验证2. 防刷机制适配3. 多地区手机号格式兼容 仅需手机号登录的场景(如社交 / 工具类 App)
二、数据库类模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
database Firebase Realtime Database 实时数据库操作 1. 数据增删改查(CRUD)2. 实时数据监听(数据变化自动同步到客户端)3. 离线数据持久化 实时同步场景(如聊天、实时榜单)
firestore Cloud Firestore 文档型数据库操作(比 Realtime Database 更灵活) 1. 文档 / 集合的增删改查2. 复合查询 / 索引配置3. 事务操作4. 批量写入 复杂数据结构(如电商商品、用户资料)
firestore-kotlin Firestore 的 Kotlin 协程版示例(适配 Kotlin 开发者) 基于 Kotlin Flow / 协程的异步数据操作,替代回调 Kotlin 优先的项目
三、分析与监控类模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
analytics Firebase Analytics 应用行为分析 1. 自定义事件埋点2. 用户属性设置3. 事件参数传递4. 转化跟踪 统计用户行为(如点击、留存、转化)
crashlytics Firebase Crashlytics 崩溃监控 1. 主动触发崩溃测试2. 自定义日志记录3. 非致命异常捕获4. 崩溃数据上报 定位 / 修复 App 崩溃问题
performance Firebase Performance Monitoring 性能监控 1. 启动时间监控2. 网络请求耗时统计3. 自定义性能跟踪4. 内存 / CPU 监控 优化 App 性能(如卡顿、加载慢)
remoteconfig Firebase Remote Config 远程配置 1. 无需发版修改 App 配置2. 按用户分组下发不同配置3. 配置缓存 / 实时更新 A/B 测试、动态开关功能
四、云存储与文件管理模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
storage Firebase Cloud Storage 文件存储 1. 文件上传 / 下载2. 进度监听3. 权限控制(仅授权用户访问)4. 图片压缩上传 存储用户头像、视频、文档等
五、消息推送模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
messaging Firebase Cloud Messaging (FCM) 推送 1. 后台推送通知2. 前台接收数据消息3. 通知栏自定义样式4. 推送点击跳转 运营推送、消息提醒
inappmessaging Firebase In-App Messaging 应用内消息 1. 弹窗 / 横幅消息展示2. 基于用户行为触发消息3. 消息样式自定义 应用内运营提示(如引导、活动)
六、安全与工具类模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
appcheck Firebase App Check 应用安全验证 1. 防止恶意请求 / 刷接口2. 与 Recaptcha/Play Integrity 集成3. 调试模式适配 保护 Firebase 资源不被滥用
functions Firebase Cloud Functions 云函数 1. 调用云端自定义函数2. 处理耗时 / 敏感逻辑(如支付、数据校验)3. 前后端交互 减少客户端逻辑、保护接口安全
installations Firebase Installations 设备标识管理 1. 设备唯一标识生成 / 刷新2. 标识关联用户数据3. 隐私合规适配 设备级数据统计、推送标识管理
dynamiclinks Firebase Dynamic Links 动态链接 1. 跨平台链接跳转2. 应用未安装时引导下载3. 链接参数传递 分享、拉新、活动跳转
七、AI/ML 模块

表格

模块名 核心功能 演示的 Firebase 特性 适用场景
mlkit Firebase ML Kit 移动端 AI 能力 1. 文字识别(OCR)2. 人脸检测3. 图像标签识别4. 语言翻译5. 条码扫描 本地 AI 功能(无需服务器)
八、其他辅助模块

表格

模块名 核心功能 备注
appdistribution Firebase App Distribution 应用分发 测试包分发、测试反馈收集,替代蒲公英 / TestFlight 等工具
firestore-snippets Firestore 代码片段合集 包含更多细分场景的 Firestore 用法(如分页、过滤、排序)
internal 项目内部工具模块(非业务功能) 提供基础工具类、依赖管理,无需单独运行

实用使用建议

  1. 运行单个模块 :Android Studio 中,顶部 Run/Debug Configurations 选择对应模块(如 authfirestore),直接运行即可,无需编译所有模块;
  2. 配置 Firebase 项目 :每个模块根目录有 google-services.json 示例,需替换为自己 Firebase 项目的配置文件(Firebase 控制台下载);
  3. 按需学习 :优先学习和自己项目相关的模块(如做社交 App 先学 auth+database,做电商先学 firestore+storage);
  4. 版本适配 :模块中 SDK 版本可能不是最新,可根据 Firebase 官方文档更新 build.gradle 中的依赖版本。

  1. quickstart-android 是 Firebase Android 开发的官方最佳实践参考,每个模块聚焦一个核心功能,代码简洁易理解;
  2. 核心高频模块:auth(认证)、firestore(数据库)、analytics(分析)、crashlytics(崩溃监控)、messaging(推送);
  3. 使用时优先运行单个模块,替换自己的 google-services.json,即可快速验证 Firebase 功能的集成效果。

实用案例说明

用户现在要求更详细地讲解 quickstart-android 各个模块,首先需要保持结构清晰,每个模块不仅要功能,还要核心代码示例、关键配置、运行注意事项这些细节,因为用户之前问过错误和版本,现在需要更深入的内容,适合新手理解每个模块的实际使用。

首先,先重新梳理结构,还是按类别分,但每个模块补充:核心功能(更细)、关键配置步骤、核心代码示例、运行注意事项。这样用户不仅知道功能,还知道怎么跑、核心代码是啥,更实用。

首先,整体定位先简要提,然后分大类:身份认证、数据库、分析监控、云存储、消息推送、安全工具、AI/ML、辅助模块。每个大类下的模块,逐个拆解,补充细节。

比如 auth 模块,之前说功能,现在补充:关键配置(google-services.json、依赖添加)、核心代码示例(邮箱注册、手机号登录)、运行注意事项(开启对应登录方式、测试手机号限制)。

还要注意语言通俗易懂,代码示例简洁,关键部分注释,符合新手需求。

最后总结部分,除了核心模块,还要补充使用技巧,比如如何快速跑通单个模块,常见坑点。

现在开始组织内容:

项目整体定位(简要)

Firebase quickstart-android 是 Firebase 官方为 Android 开发者打造的全功能实战示例库,每个子模块独立封装 Firebase 一个核心产品的完整使用流程,包含「配置 - 调用 - 结果处理」全链路代码,适配 Android 11+ 及最新 Gradle/AGP 版本。相比官方文档,示例代码更贴近实际开发场景,是新手从 "理解概念" 到 "落地代码" 的最佳桥梁。


各模块深度解析(按使用频率 + 功能分类)

一、身份认证类模块(用户体系核心)

这类模块聚焦 Firebase Authentication(简称 Auth),覆盖主流登录方式,核心是「用户身份验证 + 身份态管理」。

1. auth(基础认证全功能模块)
  • 核心功能 :一站式演示 6 种主流登录方式,包含 "注册 - 登录 - 信息修改 - 注销 - 令牌管理" 全流程。

    • 基础登录:邮箱 / 密码、匿名登录
    • 第三方登录:Google、Facebook、Twitter、Apple(iOS/Android 14+)
    • 进阶能力:用户信息(昵称 / 头像)修改、ID Token 刷新、多账号切换
  • 关键配置步骤 (跑通模块必做):

    1. 从 Firebase 控制台下载 google-services.json,替换模块根目录的示例文件;

    2. 控制台开启对应登录方式(如「邮箱 / 密码」「Google 登录」);

    3. 模块依赖(已内置,可参考): gradle

      复制代码
      dependencies {
          implementation 'com.google.firebase:firebase-auth:22.3.1'
          implementation 'com.google.android.gms:play-services-auth:20.7.0' // Google 登录依赖
      }
  • 核心代码示例 (关键片段):

    kotlin

    复制代码
    // 1. 邮箱/密码注册
    val auth = FirebaseAuth.getInstance()
    auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                // 注册成功,获取当前用户
                val user = auth.currentUser
                Log.d("AuthDemo", "注册成功:${user?.uid}")
            } else {
                // 失败处理(如邮箱已存在、密码过短)
                Log.e("AuthDemo", "注册失败:${task.exception?.message}")
            }
        }
    
    // 2. 手机号验证码登录(核心两步:发验证码→验证验证码)
    // 第一步:发送验证码
    val phoneAuthOptions = PhoneAuthOptions.newBuilder(auth)
        .setPhoneNumber(phoneNumber) // 格式:+8613800138000
        .setTimeout(60L, TimeUnit.SECONDS)
        .setActivity(this)
        .setCallbacks(phoneAuthCallbacks) // 回调处理验证码发送结果
        .build()
    PhoneAuthProvider.verifyPhoneNumber(phoneAuthOptions)
    
    // 第二步:验证验证码(用户输入后)
    val credential = PhoneAuthProvider.getCredential(verificationId, smsCode)
    auth.signInWithCredential(credential)
        .addOnCompleteListener { task -> /* 登录结果处理 */ }
  • 运行注意事项

    • 测试手机号需在 Firebase 控制台添加「测试手机号」(避免触发防刷机制);
    • Google 登录需配置 SHA-1 指纹到 Firebase 控制台(否则提示 "无权限");
    • 匿名登录可转为永久账号(绑定邮箱 / 手机号),示例中已包含该逻辑。
2. auth-phone(手机号认证专项模块)
  • 核心功能 :深度聚焦手机号登录,补充 auth 模块未覆盖的细节:
    • 多地区手机号格式适配(如 + 1、+852);
    • 验证码自动填充(通过 SMS Retriever API);
    • 重新发送验证码、超时处理;
    • 防刷机制触发后的错误处理;
  • 核心差异 :相比 auth 模块,该模块单独封装了「手机号登录工具类」,代码更易复用,适合直接拷贝到项目中。

二、数据库类模块(数据存储核心)

Firebase 提供两种数据库:Realtime Database(实时同步)、Firestore(文档型,更灵活),示例模块覆盖两种数据库的全操作。

1. database(Realtime Database 模块)
  • 核心功能 :演示实时数据库的「实时同步 + 离线能力」,核心场景:

    • 数据 CRUD:增(setValue)、删(removeValue)、改(updateChildren)、查(addValueEventListener);
    • 实时监听:数据变化时客户端自动刷新(无需主动拉取);
    • 离线持久化:断网时写入本地缓存,联网后自动同步;
    • 权限控制:演示规则配置(如仅授权用户读写自己的数据);
  • 关键配置

    1. Firebase 控制台开启 Realtime Database,设置测试规则(临时允许所有读写,上线前需修改): json

      复制代码
      {
        "rules": {
          ".read": true,
          ".write": true
        }
      }
    2. 依赖配置: gradle

      复制代码
      implementation 'com.google.firebase:firebase-database:20.3.0'
  • 核心代码示例

    kotlin

    复制代码
    // 1. 获取数据库引用(路径:/users/{uid})
    val userId = FirebaseAuth.getInstance().currentUser?.uid ?: ""
    val userRef = FirebaseDatabase.getInstance().getReference("users").child(userId)
    
    // 2. 写入数据(实时同步到云端+所有监听该路径的客户端)
    val userData = HashMap<String, Any>()
    userData["name"] = "张三"
    userData["age"] = 25
    userRef.setValue(userData) // 覆盖写入
    // userRef.updateChildren(userData) // 增量更新
    
    // 3. 实时监听数据变化(数据变则回调触发)
    userRef.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            // 数据更新,解析数据
            val name = snapshot.child("name").value as? String
            Log.d("RTDB", "用户名:$name")
        }
    
        override fun onCancelled(error: DatabaseError) {
            Log.e("RTDB", "监听失败:${error.message}")
        }
    })
  • 运行注意事项

    • 实时监听需手动移除(如 onDestroy 中调用 removeEventListener),否则会内存泄漏;
    • 离线持久化默认开启,可通过 setPersistenceEnabled(true) 显式配置。
2. firestore(Firestore 文档型数据库模块)
  • 核心功能 :Firestore 是 Firebase 新一代数据库,演示「文档 / 集合」操作,核心能力:

    • 文档 CRUD:单文档增删改查、集合批量操作;
    • 高级查询:条件过滤、排序、分页、复合索引;
    • 事务与批处理:保证数据一致性(如转账场景);
    • 实时监听:文档 / 集合级别的实时同步;
  • 核心代码示例

    kotlin

    复制代码
    // 1. 获取 Firestore 实例+集合引用
    val db = FirebaseFirestore.getInstance()
    val usersCollection = db.collection("users")
    
    // 2. 添加文档(自动生成文档ID)
    val user = hashMapOf(
        "name" to "李四",
        "email" to "lisi@example.com",
        "createTime" to FieldValue.serverTimestamp() // 服务器时间
    )
    usersCollection.add(user)
        .addOnSuccessListener { documentReference ->
            Log.d("Firestore", "文档ID:${documentReference.id}")
        }
    
    // 3. 高级查询:查询年龄>18且城市为北京的用户,分页(每页10条)
    usersCollection.whereGreaterThan("age", 18)
        .whereEqualTo("city", "北京")
        .limit(10)
        .get()
        .addOnSuccessListener { querySnapshot ->
            for (document in querySnapshot) {
                Log.d("Firestore", "${document.id} => ${document.data}")
            }
        }
    
    // 4. 事务(保证扣减余额的原子性)
    db.runTransaction { transaction ->
        val docRef = usersCollection.document(userId)
        val snapshot = transaction.get(docRef)
        val balance = snapshot.getLong("balance") ?: 0
        if (balance < 100) {
            throw FirebaseFirestoreException("余额不足", FirebaseFirestoreException.Code.ABORTED)
        }
        transaction.update(docRef, "balance", balance - 100)
        null
    }.addOnSuccessListener { Log.d("Firestore", "事务执行成功") }
  • 运行注意事项

    • 复合查询需在 Firebase 控制台创建索引(控制台会提示缺失索引的链接,点击即可自动创建);
    • Firestore 有免费额度限制,测试时避免高频批量操作;
    • firestore-kotlin 模块是 Kotlin 协程版(用 await() 替代回调),代码更简洁,适合 Kotlin 项目。

三、分析与监控类模块(运营 + 质量核心)

这类模块聚焦 App 数据统计、崩溃监控、性能优化,是上线前必集成的能力。

1. analytics(Analytics 行为分析模块)
  • 核心功能 :演示 Firebase Analytics 核心能力,覆盖「事件埋点 + 用户属性 + 转化跟踪」:

    • 自定义事件:跟踪按钮点击、页面浏览、支付完成等行为;
    • 用户属性:设置用户等级、性别、地区等维度;
    • 自动事件:无需代码,自动收集启动、会话、屏幕浏览等基础事件;
  • 核心代码示例

    kotlin

    复制代码
    val analytics = FirebaseAnalytics.getInstance(this)
    
    // 1. 设置用户属性(维度)
    analytics.setUserProperty("user_level", "vip")
    analytics.setUserId("123456") // 关联用户唯一标识
    
    // 2. 上报自定义事件(如"点击购买按钮")
    val bundle = Bundle()
    bundle.putString("product_id", "phone_123")
    bundle.putDouble("price", 2999.99)
    analytics.logEvent("purchase_click", bundle)
    
    // 3. 上报推荐事件(Firebase 预定义事件,适配官方报表)
    analytics.logEvent(FirebaseAnalytics.Event.PURCHASE) {
        param(FirebaseAnalytics.Param.CURRENCY, "CNY")
        param(FirebaseAnalytics.Param.VALUE, 2999.99)
    }
  • 运行注意事项

    • 事件数据有 30 分钟左右延迟,需在 Firebase 控制台「Analytics」模块查看;
    • 测试时可开启「DebugView」(终端执行 adb shell setprop debug.firebase.analytics.app 包名),实时查看事件上报;
2. crashlytics(崩溃监控模块)
  • 核心功能 :演示 Crashlytics 崩溃捕获、自定义日志、非致命异常监控:

    • 主动崩溃测试:触发空指针、数组越界等崩溃;
    • 自定义日志:添加关键流程日志,辅助定位崩溃原因;
    • 非致命异常:捕获 try-catch 中的异常(如网络请求失败);
  • 核心代码示例

    kotlin

    复制代码
    // 1. 主动触发崩溃(测试用)
    findViewById<Button>(R.id.crashButton).setOnClickListener {
        FirebaseCrashlytics.getInstance().crash() // 触发崩溃
    }
    
    // 2. 记录自定义日志(崩溃时会附带这些日志)
    FirebaseCrashlytics.getInstance().log("用户点击了支付按钮,订单ID:123456")
    
    // 3. 记录非致命异常(捕获但不崩溃的异常)
    try {
        val a = 1 / 0
    } catch (e: ArithmeticException) {
        FirebaseCrashlytics.getInstance().recordException(e)
    }
    
    // 4. 设置自定义键值(崩溃报表中筛选用)
    FirebaseCrashlytics.getInstance().setCustomKey("device_model", Build.MODEL)
  • 运行注意事项

    • 崩溃数据有 5-10 分钟延迟,需在 Firebase 控制台「Crashlytics」模块查看;
    • 调试时需关闭「Instant Run」,否则崩溃可能不被捕获;
3. performance(性能监控模块)
  • 核心功能 :监控 App 性能指标,包含:

    • 自动监控:启动时间(冷启动 / 热启动)、网络请求耗时、Activity 切换耗时;
    • 自定义监控:跟踪耗时操作(如数据加载、图片压缩);
  • 核心代码示例

    kotlin

    复制代码
    val perf = FirebasePerformance.getInstance()
    
    // 1. 自定义性能跟踪(监控数据加载耗时)
    val trace = perf.newTrace("data_load_trace")
    trace.start() // 开始计时
    
    // 模拟耗时操作(如网络请求、数据库查询)
    Thread.sleep(1000)
    
    trace.stop() // 结束计时,数据自动上报
    
    // 2. 监控网络请求(自动捕获 OkHttp 请求)
    // 需配置 OkHttp 拦截器(示例中已集成)
    val client = OkHttpClient.Builder()
        .addInterceptor(FirebasePerformanceInterceptor())
        .build()
  • 运行注意事项

    • 性能数据需在 Firebase 控制台「Performance」模块查看,延迟约 10 分钟;
    • 自定义跟踪名称不能含空格,建议用下划线分隔(如 data_load_trace)。
4. remoteconfig(远程配置模块)
  • 核心功能 :无需发版,动态修改 App 配置(如按钮文案、功能开关、UI 样式):

    • 基础用法:获取远程配置值,设置默认值;
    • 进阶用法:按用户分组(如仅给测试用户开启新功能)、配置缓存策略;
  • 核心代码示例

    kotlin

    复制代码
    val remoteConfig = FirebaseRemoteConfig.getInstance()
    
    // 1. 设置默认配置(本地兜底)
    val defaultConfig = HashMap<String, Any>()
    defaultConfig["button_text"] = "立即购买"
    defaultConfig["new_feature_switch"] = false
    remoteConfig.setDefaultsAsync(defaultConfig)
    
    // 2. 获取远程配置(优先用云端值,无网络则用本地默认值)
    remoteConfig.fetchAndActivate() // 拉取云端配置并激活
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                val buttonText = remoteConfig.getString("button_text")
                val newFeatureSwitch = remoteConfig.getBoolean("new_feature_switch")
                // 更新UI
                findViewById<Button>(R.id.btn).text = buttonText
                if (newFeatureSwitch) {
                    // 显示新功能入口
                }
            }
        }
  • 运行注意事项

    • 调试时可设置缓存过期时间为 0(fetch(0)),实时获取最新配置;
    • 云端配置需在 Firebase 控制台「Remote Config」模块配置,发布后生效。

四、云存储模块(storage
  • 核心功能 :演示 Cloud Storage 云端文件存储,覆盖「文件上传 / 下载 / 删除 + 进度监听 + 权限控制」:

    • 上传:图片 / 视频 / 文档上传,支持进度监听、压缩上传;
    • 下载:文件下载到本地,支持断点续传;
    • 权限:仅授权用户访问自己的文件(通过 Security Rules 配置);
  • 核心代码示例

    kotlin

    复制代码
    // 1. 获取存储引用(路径:/images/{uid}/avatar.jpg)
    val storage = Firebase.storage
    val userId = FirebaseAuth.getInstance().currentUser?.uid ?: ""
    val avatarRef = storage.reference.child("images").child(userId).child("avatar.jpg")
    
    // 2. 上传文件(从本地文件)
    val file = File("/sdcard/avatar.jpg")
    val uploadTask = avatarRef.putFile(Uri.fromFile(file))
    
    // 监听上传进度
    uploadTask.addOnProgressListener { taskSnapshot ->
        val progress = (100.0 * taskSnapshot.bytesTransferred) / taskSnapshot.totalByteCount
        Log.d("Storage", "上传进度:$progress%")
    }.addOnSuccessListener {
        // 上传成功,获取文件下载链接
        avatarRef.downloadUrl.addOnSuccessListener { uri ->
            Log.d("Storage", "下载链接:${uri.toString()}")
        }
    }
    
    // 3. 下载文件到本地
    val localFile = File.createTempFile("avatar", "jpg")
    avatarRef.getFile(localFile)
        .addOnSuccessListener {
            Log.d("Storage", "下载完成,路径:${localFile.absolutePath}")
        }
  • 运行注意事项

    • 存储权限:Android 10+ 需申请 READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE,或使用 MediaStore;

    • 安全规则:测试时可临时设置为允许所有读写(上线前需修改为仅授权用户访问): rules

      复制代码
      service firebase.storage {
        match /b/{bucket}/o {
          match /{allPaths=**} {
            allow read, write: if true;
          }
        }
      }
    • 大文件上传建议分块(示例中已包含分块上传逻辑)。


五、消息推送类模块
1. messaging(FCM 推送模块)
  • 核心功能 :演示 Firebase Cloud Messaging(FCM)推送能力,覆盖「通知消息 + 数据消息 + 交互处理」:

    • 后台推送:从 Firebase 控制台发送通知 / 数据消息;
    • 前台接收:App 在前台时接收消息并自定义展示;
    • 交互处理:点击通知跳转指定页面、传递参数;
  • 核心代码示例

    kotlin

    复制代码
    // 1. 接收消息的 Service(需在 AndroidManifest 注册)
    class MyFirebaseMessagingService : FirebaseMessagingService() {
        // 接收新的 FCM Token(设备唯一标识)
        override fun onNewToken(token: String) {
            Log.d("FCM", "新Token:$token")
            // 将Token上传到自己的服务器,用于定向推送
        }
    
        // 接收消息(前台/后台)
        override fun onMessageReceived(remoteMessage: RemoteMessage) {
            // 处理通知消息
            remoteMessage.notification?.let {
                Log.d("FCM", "通知标题:${it.title},内容:${it.body}")
                // 自定义展示通知(前台时)
                showCustomNotification(it.title, it.body)
            }
    
            // 处理数据消息(无论前台/后台,都会触发)
            remoteMessage.data.isNotEmpty().let {
                Log.d("FCM", "数据消息:${remoteMessage.data}")
                // 解析参数,执行逻辑(如更新UI、请求接口)
            }
        }
    }
  • 运行注意事项

    • 需在 AndroidManifest 中注册 FirebaseMessagingService 子类;
    • 后台推送需配置通知渠道(Android 8.0+ 强制要求);
    • inappmessaging 模块是应用内消息(弹窗 / 横幅),需在 Firebase 控制台配置触发条件(如用户点击某按钮后展示)。

六、其他核心模块(安全 / AI / 工具)
1. appcheck(应用安全验证)
  • 核心功能:防止恶意请求(如刷接口、伪造请求),集成 Recaptcha/Play Integrity 验证;
  • 关键代码:初始化 AppCheck,绑定到 Firebase 服务(如 Firestore、Storage);
  • 注意:调试时需开启「调试模式」,否则会拦截合法请求。
2. functions(云函数)
  • 核心功能:调用云端自定义函数(如处理支付、数据校验),避免敏感逻辑暴露在客户端;

  • 核心代码: kotlin

    复制代码
    val functions = FirebaseFunctions.getInstance()
    // 调用云端函数(函数名:addNumbers)
    val data = hashMapOf("firstNumber" to 10, "secondNumber" to 20)
    functions.getHttpsCallable("addNumbers")
        .call(data)
        .addOnSuccessListener { result ->
            Log.d("Functions", "结果:${result.data}")
        }
  • 注意:需先在 Firebase 控制台部署云函数(Node.js 编写),才能调用。

3. mlkit(移动端 AI)
  • 核心功能:演示 ML Kit 本地 AI 能力,无需联网:
    • 文字识别(OCR):识别图片中的文字;
    • 人脸检测:检测人脸位置、表情;
    • 图像标签:识别图片内容(如 "猫""汽车");
    • 条码扫描:扫描二维码 / 条形码;
  • 注意:需添加对应 ML Kit 依赖(如 firebase-ml-vision),部分模型需下载到本地。

快速跑通单个模块的通用步骤

  1. 准备工作
    • 注册 Firebase 账号,创建项目,下载 google-services.json
    • 替换模块根目录的 google-services.json
  2. 配置模块
    • 在 Firebase 控制台开启对应功能(如 Auth 开启邮箱登录、Firestore 创建数据库);
    • 同步 Gradle(Android Studio 点击「Sync Project with Gradle Files」);
  3. 运行模块
    • 顶部「Run/Debug Configurations」选择对应模块(如 auth);
    • 连接真机 / 模拟器,点击「Run」;
  4. 验证功能
    • 按模块界面提示操作(如点击 "注册" 按钮),查看 Logcat 日志或 Firebase 控制台数据。

总结

  1. quickstart-android 每个模块是 Firebase 对应功能的最小可运行单元,核心代码可直接拷贝到项目中复用;
  2. 高频核心模块优先级:auth(认证)> firestore(数据库)> analytics/crashlytics(分析 / 崩溃)> storage(存储)> messaging(推送);
  3. 跑通模块的关键:替换 google-services.json + 控制台开启对应功能 + 配置必要权限 / 规则;
  4. 新手建议从 auth 模块入手,理解 Firebase 基础集成流程后,再学习其他模块。

项目整体定位(补充)

Firebase quickstart-android 是 Firebase 官方为 Android 开发者打造的全功能实战示例库,每个子模块独立封装 Firebase 一个核心产品的「配置 - 调用 - 结果处理」全链路代码,适配 Android 11+ 及最新 Gradle/AGP 版本。相比官方文档,示例代码更贴近实际开发场景,是新手从 "理解概念" 到 "落地代码" 的最佳桥梁,且所有模块支持单独编译运行,无需依赖其他模块。


各模块深度解析(按使用频率 + 功能分类,补充核心代码 / 配置 / 坑点)

一、身份认证类模块(用户体系核心)

聚焦 Firebase Authentication(Auth),覆盖主流登录方式,核心是「用户身份验证 + 身份态管理」。

1. auth(基础认证全功能模块)
  • 核心功能 :一站式演示 6 种登录方式,包含 "注册 - 登录 - 信息修改 - 注销 - 令牌管理" 全流程:

    • 基础登录:邮箱 / 密码、匿名登录(可转为永久账号);
    • 第三方登录:Google、Facebook、Twitter、Apple(Android 14+);
    • 进阶能力:用户昵称 / 头像修改、ID Token 刷新、多账号切换。
  • 关键配置(必做)

    1. Firebase 控制台开启对应登录方式(如「邮箱 / 密码」「Google 登录」);

    2. Google 登录需配置 SHA-1 指纹到 Firebase 控制台(否则提示 "无权限");

    3. 核心依赖(模块已内置,可参考): gradle

      复制代码
      implementation 'com.google.firebase:firebase-auth:22.3.1'
      implementation 'com.google.android.gms:play-services-auth:20.7.0' // Google 登录依赖
  • 核心代码示例(关键片段)

    kotlin

    复制代码
    // 1. 邮箱/密码注册
    val auth = FirebaseAuth.getInstance()
    auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                val user = auth.currentUser // 注册成功,获取用户信息
                Log.d("AuthDemo", "用户UID:${user?.uid}")
            } else {
                // 处理失败场景(如邮箱已存在、密码过短)
                Log.e("AuthDemo", "注册失败:${task.exception?.message}")
            }
        }
    
    // 2. 手机号验证码登录(核心两步)
    // 第一步:发送验证码
    val phoneOptions = PhoneAuthOptions.newBuilder(auth)
        .setPhoneNumber("+8613800138000") // 带国家码的手机号
        .setTimeout(60L, TimeUnit.SECONDS)
        .setActivity(this)
        .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
                // 保存verificationId,用于后续验证
            }
        }).build()
    PhoneAuthProvider.verifyPhoneNumber(phoneOptions)
    
    // 第二步:验证验证码
    val credential = PhoneAuthProvider.getCredential(verificationId, smsCode)
    auth.signInWithCredential(credential).addOnCompleteListener { /* 登录结果处理 */ }
  • 运行坑点

    • 测试手机号需在 Firebase 控制台添加「测试手机号」(避免触发防刷机制);
    • 匿名登录转为永久账号时,需先绑定邮箱 / 手机号,否则注销后数据丢失。
2. auth-phone(手机号认证专项模块)
  • 核心差异 :相比 auth 模块,补充「验证码自动填充(SMS Retriever API)」「多地区手机号格式适配」「重新发送验证码」等细节,且封装了「手机号登录工具类」,代码更易复用。

二、数据库类模块(数据存储核心)

Firebase 提供两种数据库:Realtime Database(实时同步)、Firestore(文档型,更灵活),示例覆盖全操作场景。

1. database(Realtime Database 模块)
  • 核心功能 :演示「实时同步 + 离线能力」,核心场景:

    • 数据 CRUD:增(setValue)、删(removeValue)、改(updateChildren)、查(addValueEventListener);
    • 实时监听:数据变化时客户端自动刷新(无需主动拉取);
    • 离线持久化:断网时写入本地缓存,联网后自动同步。
  • 关键配置 :Firebase 控制台临时设置测试规则(上线前需修改为仅授权用户访问):

    json

    复制代码
    {
      "rules": { ".read": true, ".write": true }
    }
  • 核心代码示例

    kotlin

    复制代码
    // 1. 实时监听数据变化(路径:/users/{uid})
    val userRef = FirebaseDatabase.getInstance().getReference("users").child(userId)
    userRef.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            // 数据更新,解析数据(自动触发)
            val name = snapshot.child("name").value as? String
        }
        override fun onCancelled(error: DatabaseError) { /* 监听失败处理 */ }
    })
    
    // 2. 离线持久化(默认开启,显式配置)
    FirebaseDatabase.getInstance().setPersistenceEnabled(true)
  • 运行坑点

    • 实时监听需在 onDestroy 中调用 removeEventListener,否则内存泄漏;
    • 嵌套数据过深会导致监听效率低,建议扁平化数据结构(如 /users/{uid}/name 而非 /users/{uid}/info/name)。
2. firestore(Firestore 文档型数据库模块)
  • 核心功能 :新一代数据库,演示「文档 / 集合操作 + 高级查询 + 事务」:

    • 文档 CRUD:单文档增删改查、集合批量操作;
    • 高级查询:条件过滤、排序、分页、复合索引;
    • 事务:保证数据一致性(如转账、库存扣减)。
  • 核心代码示例

    kotlin

    复制代码
    val db = FirebaseFirestore.getInstance()
    val usersCol = db.collection("users")
    
    // 1. 高级查询:年龄>18且城市为北京,分页10条
    usersCol.whereGreaterThan("age", 18)
        .whereEqualTo("city", "北京")
        .limit(10)
        .get()
        .addOnSuccessListener { snapshot ->
            for (doc in snapshot) {
                Log.d("Firestore", "${doc.id} => ${doc.data}")
            }
        }
    
    // 2. 事务(原子性扣减余额)
    db.runTransaction { tx ->
        val docRef = usersCol.document(userId)
        val balance = tx.get(docRef).getLong("balance") ?: 0
        if (balance < 100) throw FirebaseFirestoreException("余额不足", ABORTED)
        tx.update(docRef, "balance", balance - 100)
        null
    }.addOnSuccessListener { Log.d("Firestore", "事务成功") }
  • 运行坑点

    • 复合查询需创建索引(控制台会提示缺失索引的链接,点击自动创建);
    • Firestore 有免费额度限制,测试时避免高频批量操作;
    • firestore-kotlin 模块是 Kotlin 协程版(用 await() 替代回调),代码更简洁。

三、分析与监控类模块(运营 + 质量核心)

上线前必集成,覆盖行为统计、崩溃监控、性能优化。

1. analytics(Analytics 行为分析)
  • 核心功能 :演示「事件埋点 + 用户属性 + 转化跟踪」:

    • 自定义事件:跟踪按钮点击、支付完成等行为;
    • 用户属性:设置用户等级、性别等维度;
    • 自动事件:无需代码,自动收集启动、会话、页面浏览等基础事件。
  • 核心代码示例

    kotlin

    复制代码
    val analytics = FirebaseAnalytics.getInstance(this)
    
    // 1. 设置用户属性
    analytics.setUserProperty("user_level", "vip")
    analytics.setUserId("123456") // 关联用户唯一标识
    
    // 2. 上报自定义事件(购买点击)
    val bundle = Bundle().apply {
        putString("product_id", "phone_123")
        putDouble("price", 2999.99)
    }
    analytics.logEvent("purchase_click", bundle)
  • 运行技巧

    • 开启 DebugView(终端执行 adb shell setprop debug.firebase.analytics.app 包名),实时查看事件上报;
    • 事件数据有 30 分钟延迟,需在 Firebase 控制台「Analytics」模块查看。
2. crashlytics(崩溃监控)
  • 核心功能 :捕获崩溃、自定义日志、非致命异常监控:

    • 主动崩溃测试:触发空指针、数组越界等崩溃;
    • 自定义日志:辅助定位崩溃原因;
    • 非致命异常:捕获 try-catch 中的异常(如网络请求失败)。
  • 核心代码示例

    kotlin

    复制代码
    // 1. 主动触发崩溃(测试用)
    findViewById<Button>(R.id.crashBtn).setOnClickListener {
        FirebaseCrashlytics.getInstance().crash()
    }
    
    // 2. 记录非致命异常
    try {
        val a = 1 / 0
    } catch (e: ArithmeticException) {
        FirebaseCrashlytics.getInstance().recordException(e)
    }
  • 运行坑点

    • 崩溃数据有 5-10 分钟延迟;
    • 调试时需关闭「Instant Run」,否则崩溃可能不被捕获。
3. remoteconfig(远程配置)
  • 核心功能 :无需发版,动态修改 App 配置(如按钮文案、功能开关):

    • 基础用法:获取远程配置值,设置本地默认值;
    • 进阶用法:按用户分组下发不同配置(如仅测试用户开启新功能)。
  • 核心代码示例

    kotlin

    复制代码
    val remoteConfig = FirebaseRemoteConfig.getInstance()
    
    // 1. 设置本地默认值
    val defaults = hashMapOf("button_text" to "立即购买", "new_feature_switch" to false)
    remoteConfig.setDefaultsAsync(defaults)
    
    // 2. 拉取并激活云端配置
    remoteConfig.fetchAndActivate()
        .addOnSuccessListener {
            val btnText = remoteConfig.getString("button_text")
            findViewById<Button>(R.id.btn).text = btnText
        }
  • 运行技巧 :调试时设置缓存过期时间为 0(fetch(0)),实时获取最新配置。


四、云存储模块(storage
  • 核心功能 :演示 Cloud Storage 「文件上传 / 下载 / 删除 + 进度监听 + 权限控制」:

    • 上传:图片 / 视频上传,支持进度监听、压缩;
    • 下载:文件下载到本地,支持断点续传;
    • 权限:仅授权用户访问自己的文件。
  • 核心代码示例

    kotlin

    复制代码
    // 1. 获取存储引用(路径:/images/{uid}/avatar.jpg)
    val storage = Firebase.storage
    val avatarRef = storage.reference.child("images").child(userId).child("avatar.jpg")
    
    // 2. 上传文件+监听进度
    val uploadTask = avatarRef.putFile(Uri.fromFile(File("/sdcard/avatar.jpg")))
    uploadTask.addOnProgressListener { snapshot ->
        val progress = (100.0 * snapshot.bytesTransferred) / snapshot.totalByteCount
        Log.d("Storage", "上传进度:$progress%")
    }.addOnSuccessListener {
        // 获取下载链接
        avatarRef.downloadUrl.addOnSuccessListener { uri ->
            Log.d("Storage", "下载链接:${uri}")
        }
    }
  • 运行坑点

    • Android 10+ 需申请存储权限(READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE);
    • 测试时可临时设置存储规则为允许所有读写(上线前需修改)。

五、消息推送类模块(messaging/inappmessaging
1. messaging(FCM 推送)
  • 核心功能 :演示 FCM 「通知消息 + 数据消息 + 交互处理」:

    • 后台推送:从 Firebase 控制台发送通知 / 数据消息;
    • 前台接收:App 前台时自定义展示消息;
    • 交互处理:点击通知跳转指定页面。
  • 核心代码示例

    kotlin

    复制代码
    // 自定义 FCM 消息接收 Service(需在 AndroidManifest 注册)
    class MyFCMService : FirebaseMessagingService() {
        // 接收新 Token(设备唯一标识)
        override fun onNewToken(token: String) {
            Log.d("FCM", "新Token:$token")
            // 上传 Token 到自己的服务器,用于定向推送
        }
    
        // 接收消息
        override fun onMessageReceived(remoteMessage: RemoteMessage) {
            // 处理通知消息
            remoteMessage.notification?.let {
                Log.d("FCM", "通知标题:${it.title},内容:${it.body}")
            }
            // 处理数据消息(无论前台/后台都会触发)
            remoteMessage.data.forEach { (key, value) ->
                Log.d("FCM", "数据:$key = $value")
            }
        }
    }
  • 运行坑点

    • Android 8.0+ 需配置通知渠道,否则通知不展示;
    • 后台推送需保证 App 进程未被杀死(部分国产手机需加入白名单)。
2. inappmessaging(应用内消息)
  • 核心功能:演示应用内弹窗 / 横幅消息(如引导用户点击按钮、提示活动),需在 Firebase 控制台配置触发条件(如用户点击某按钮后展示)。

六、其他核心模块

表格

模块名 核心功能 关键坑点
appcheck 防止恶意请求(集成 Recaptcha/Play Integrity 验证) 调试时需开启「调试模式」,否则会拦截合法请求
functions 调用云端自定义函数(处理支付、数据校验等敏感逻辑) 需先在 Firebase 控制台部署 Node.js 云函数,才能调用
mlkit 移动端 AI 能力(OCR 文字识别、人脸检测、图像标签、条码扫描) 部分模型需下载到本地,首次使用可能有延迟
dynamiclinks 跨平台动态链接(分享、拉新、活动跳转) 需配置链接域名,测试时需用真机(模拟器可能无法跳转)

快速跑通单个模块的通用步骤

  1. 准备工作
    • 注册 Firebase 账号,创建项目,下载 google-services.json
    • 替换模块根目录的 google-services.json
  2. 配置模块
    • Firebase 控制台开启对应功能(如 Auth 开启邮箱登录、Firestore 创建数据库);
    • 同步 Gradle(Android Studio 点击「Sync Project with Gradle Files」);
  3. 运行模块
    • 顶部「Run/Debug Configurations」选择对应模块(如 auth);
    • 连接真机 / 模拟器,点击「Run」;
  4. 验证功能
    • 按界面提示操作(如点击 "注册"),查看 Logcat 日志或 Firebase 控制台数据。

总结

  1. quickstart-android 每个模块是 Firebase 对应功能的最小可运行单元,核心代码可直接拷贝复用;
  2. 高频核心模块优先级:auth(认证)> firestore(数据库)> analytics/crashlytics(分析 / 崩溃)> storage(存储)> messaging(推送);
  3. 跑通模块的关键:替换 google-services.json + 控制台开启对应功能 + 配置必要权限 / 规则;
  4. 新手建议从 auth 模块入手,理解 Firebase 基础集成流程后,再学习其他模块。
相关推荐
koeda2 小时前
android17系统兼容
android·安卓
进击的cc3 小时前
面试官:Handler 没消息时为啥不卡死?带你从源码到底层内核彻底整明白!
android·面试
Yang-Never3 小时前
OpenGL ES ->YUV图像基础知识
android·java·开发语言·kotlin·android studio
2501_915921433 小时前
常用iOS性能测试工具大全及使用指南
android·测试工具·ios·小程序·uni-app·cocoa·iphone
晨尘光3 小时前
【Android下载gradle超时解决方法】
android
zhen_hong3 小时前
ReactAgent原理
android·java·javascript
皮皮宋吖3 小时前
皮皮宋渗透日记 11|文件包含漏洞全解析:LFI/RFI/ 伪协议 / 绕过 / 防御
android·安全
阿拉斯攀登3 小时前
【无人售货柜・RK+YOLO】篇 6:安卓端落地!RK3576 + 安卓系统,YOLO RKNN 模型实时推理保姆级教程
android·人工智能·yolo·目标跟踪·瑞芯微·嵌入式驱动
只能是遇见4 小时前
ERROR 1524 (HY000) Plugin ‘mysql_native_password‘ is not loaded
android·数据库·mysql