Android firebase集成
官方文档地址:https://firebase.google.com/docs/android/setup?authuser=0
是什么
Firebase 是一个来自 Google 的移动应用程序开发平台,具有强大的开发、处理和增强应用程序的功能。本质上是一个开发人员可以依赖的工具集合,可以根据需求创建应用程序并对其进行扩展。
目前提供如下三类服务(具体服务参加创建firebase项目后项目主页的左侧的菜单):
- 发布&监控(崩溃记录、性能测试、Test Lab)
- 分析(Dashboard、Realtime、Events)
- 吸引(Predictions、A/B Testing、AdMob)
用什么
目前app基本使用Analytics和Crashlytics和performance三个服务,覆盖用户行为、崩溃分析、性能分析三类,其他服务后续用到则逐步完善文档。
集成
firebase控制台创建项目,项目下创建应用,注意包名。创建成功后可获得google-services.json文件,将其放在主app模块的根目录下
image-20210902135042943.png项目根目录build.gradle下添加:
// Google Services plugin
classpath 'com.google.gms:google-services:4.3.8'
//firebase crashlytics
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2'
// firebase Performance Monitoring plugin
classpath 'com.google.firebase:perf-plugin:1.4.0'
app模块build.gradle中的plugins下添加:
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
id 'com.google.firebase.firebase-perf'
dependencies下添加
api platform('com.google.firebase:firebase-bom:28.3.0')
api 'com.google.firebase:firebase-analytics-ktx'
api 'com.google.firebase:firebase-crashlytics-ktx'
api 'com.google.firebase:firebase-crashlytics-ndk'
api 'com.google.firebase:firebase-perf'
Analytics使用
设置用户属性
需要事先添加相关的属性名称,然后统计,参考这里
Firebase.analytics.setUserProperty(propertyName, propertyValue)
常规事件统计
Firebase.analytics.logEvent(name) {
param("image_name", name)
param("full_text", text)
}
跟踪屏幕事件
Firebase.analytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) {
param(FirebaseAnalytics.Param.SCREEN_NAME, screenName)
param(FirebaseAnalytics.Param.SCREEN_CLASS, "MainActivity")
}
bundle方式传参
val params = Bundle()
params.putString("uid", uid)
params.putDouble(FirebaseAnalytics.Param.VALUE, amount)
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
params.putString("order_id", orderid)
Firebase.analytics.logEvent("purchase", params)
java(非ktx)调用
val params = Bundle()
params.putString("uid", uid)
params.putDouble(FirebaseAnalytics.Param.VALUE, amount)
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
params.putString("order_id", orderid)
FirebaseAnalytics.getInstance(context).logEvent("purchase", params)
crashlytics使用
设置用户id
可在bug中关联看到用户id
Firebase.crashlytics.setUserId(userId)
设置崩溃日志上送开关
- 先在Mainfest中设置如下:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
- 再在代码中针对release环境放开日志上送,避免受调试数据污染
Firebase.crashlytics.setCrashlyticsCollectionEnabled(enabled)
performance使用
暂不需要特别设置,可自动收集。
注意点
-
部分google文档点击可能失效或无链接(google本身问题)
-
打release包时提示"uploadCrashlyticsMappingFileRelease FAILED",是因为release包firebase会自动上传Mapping文件。解决方案有两种
方法一、科学上网,然后在gradle.properties文件中添加
systemProp.https.proxyHost=127.0.0.1 systemProp.https.proxyPort=7890
方法二、release包设置不自动上传Mapping文件,后续手动上传
buildTypes { release { ... // firebase crashlytics设置是否要自动上传Mapping文件 firebaseCrashlytics { mappingFileUploadEnabled false } } }
网友评论