项目整体定位
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 |
项目内部工具模块(非业务功能) | 提供基础工具类、依赖管理,无需单独运行 |
实用使用建议
- 运行单个模块 :Android Studio 中,顶部
Run/Debug Configurations选择对应模块(如auth、firestore),直接运行即可,无需编译所有模块; - 配置 Firebase 项目 :每个模块根目录有
google-services.json示例,需替换为自己 Firebase 项目的配置文件(Firebase 控制台下载); - 按需学习 :优先学习和自己项目相关的模块(如做社交 App 先学
auth+database,做电商先学firestore+storage); - 版本适配 :模块中 SDK 版本可能不是最新,可根据 Firebase 官方文档更新
build.gradle中的依赖版本。
quickstart-android是 Firebase Android 开发的官方最佳实践参考,每个模块聚焦一个核心功能,代码简洁易理解;- 核心高频模块:
auth(认证)、firestore(数据库)、analytics(分析)、crashlytics(崩溃监控)、messaging(推送); - 使用时优先运行单个模块,替换自己的
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 刷新、多账号切换
-
关键配置步骤 (跑通模块必做):
-
从 Firebase 控制台下载
google-services.json,替换模块根目录的示例文件; -
控制台开启对应登录方式(如「邮箱 / 密码」「Google 登录」);
-
模块依赖(已内置,可参考): 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);
- 实时监听:数据变化时客户端自动刷新(无需主动拉取);
- 离线持久化:断网时写入本地缓存,联网后自动同步;
- 权限控制:演示规则配置(如仅授权用户读写自己的数据);
-
关键配置 :
-
Firebase 控制台开启 Realtime Database,设置测试规则(临时允许所有读写,上线前需修改): json
{ "rules": { ".read": true, ".write": true } } -
依赖配置: 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」模块配置,发布后生效。
- 调试时可设置缓存过期时间为 0(
四、云存储模块(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 控制台配置触发条件(如用户点击某按钮后展示)。
- 需在 AndroidManifest 中注册
六、其他核心模块(安全 / 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),部分模型需下载到本地。
快速跑通单个模块的通用步骤
- 准备工作 :
- 注册 Firebase 账号,创建项目,下载
google-services.json; - 替换模块根目录的
google-services.json;
- 注册 Firebase 账号,创建项目,下载
- 配置模块 :
- 在 Firebase 控制台开启对应功能(如 Auth 开启邮箱登录、Firestore 创建数据库);
- 同步 Gradle(Android Studio 点击「Sync Project with Gradle Files」);
- 运行模块 :
- 顶部「Run/Debug Configurations」选择对应模块(如
auth); - 连接真机 / 模拟器,点击「Run」;
- 顶部「Run/Debug Configurations」选择对应模块(如
- 验证功能 :
- 按模块界面提示操作(如点击 "注册" 按钮),查看 Logcat 日志或 Firebase 控制台数据。
总结
quickstart-android每个模块是 Firebase 对应功能的最小可运行单元,核心代码可直接拷贝到项目中复用;- 高频核心模块优先级:
auth(认证)>firestore(数据库)>analytics/crashlytics(分析 / 崩溃)>storage(存储)>messaging(推送); - 跑通模块的关键:替换
google-services.json+ 控制台开启对应功能 + 配置必要权限 / 规则; - 新手建议从
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 刷新、多账号切换。
-
关键配置(必做) :
-
Firebase 控制台开启对应登录方式(如「邮箱 / 密码」「Google 登录」);
-
Google 登录需配置 SHA-1 指纹到 Firebase 控制台(否则提示 "无权限");
-
核心依赖(模块已内置,可参考): 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」模块查看。
- 开启 DebugView(终端执行
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); - 测试时可临时设置存储规则为允许所有读写(上线前需修改)。
- Android 10+ 需申请存储权限(
五、消息推送类模块(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 |
跨平台动态链接(分享、拉新、活动跳转) | 需配置链接域名,测试时需用真机(模拟器可能无法跳转) |
快速跑通单个模块的通用步骤
- 准备工作 :
- 注册 Firebase 账号,创建项目,下载
google-services.json; - 替换模块根目录的
google-services.json;
- 注册 Firebase 账号,创建项目,下载
- 配置模块 :
- Firebase 控制台开启对应功能(如 Auth 开启邮箱登录、Firestore 创建数据库);
- 同步 Gradle(Android Studio 点击「Sync Project with Gradle Files」);
- 运行模块 :
- 顶部「Run/Debug Configurations」选择对应模块(如
auth); - 连接真机 / 模拟器,点击「Run」;
- 顶部「Run/Debug Configurations」选择对应模块(如
- 验证功能 :
- 按界面提示操作(如点击 "注册"),查看 Logcat 日志或 Firebase 控制台数据。
总结
quickstart-android每个模块是 Firebase 对应功能的最小可运行单元,核心代码可直接拷贝复用;- 高频核心模块优先级:
auth(认证)>firestore(数据库)>analytics/crashlytics(分析 / 崩溃)>storage(存储)>messaging(推送); - 跑通模块的关键:替换
google-services.json+ 控制台开启对应功能 + 配置必要权限 / 规则; - 新手建议从
auth模块入手,理解 Firebase 基础集成流程后,再学习其他模块。