Android-接入Firebase崩溃统计

简介

Firebase
支持捕获Android层和native层的异常信息
支持设置Non-fatals,统计重要性低一些的异常信息,用于分析

接入崩溃统计

模块的 build.gradle

plugins {
    id 'com.google.firebase.crashlytics'
}
dependencies {
implementation platform('com.google.firebase:firebase-bom:31.1.1')
implementation 'com.google.firebase:firebase-crashlytics-ktx'
}

根目录的 build.gradle

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.3.13'
        // Add the dependency for the Crashlytics Gradle plugin
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.4'
    }
}

这样就搞定了,记得配置 google-services.json 文件

接入C层崩溃统计

在之前基础上 模块的 build.gradle

buildTypes {
      release {
          // Add this extension
          firebaseCrashlytics {
                // Enable processing and uploading of native symbols to Firebase servers.
                // By default, this is disabled to improve build speeds.
                // This flag must be enabled to see properly-symbolicated native
                // stack traces in the Crashlytics dashboard.
                nativeSymbolUploadEnabled true
                strippedNativeLibsDir 'build/intermediates/stripped_native_libs/release/out/lib'
                unstrippedNativeLibsDir 'build/intermediates/merged_native_libs/release/out/lib'
            }
       }
}

dependencies {
implementation 'com.google.firebase:firebase-crashlytics-ndk'
}
Non-fatals

登录失败,try catch 等异常的信息可以通过 Non-fatals 传上平台,用于分析

FirebaseCrashlytics.getInstance().recordException(e)

可以和项目 logUtils的工具类配置使用

fun w(e: Exception) {
   Log.w(TAG, e)
   //上报到FireBase
   FirebaseCrashlytics.getInstance().recordException(e)
}
资料

官方文档捕获C异常
https://stackoverflow.com/questions/65961515/gradleexception-crashlytics-could-not-determine-stripped-unstripped-native-libr

### Android 海外游戏接入常用功能及其实现方法 #### 一、支付功能集成 在海外游戏中,支付是最常见的需求之一。通常通过第三方支付平台来实现。 - **Google Play Billing Library**: Google 提供了一个官方库用于处理应用内购买。开发者可以利用该库支持一次性商品、订阅服务等功能[^2]。 ```java // 初始化计费客户端 BillingClient billingClient = BillingClient.newBuilder(context).setListener(purchasesUpdatedListener).build(); billingClient.startConnection(new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { } }); ``` - **Stripe 或 PayPal 集成**: 对于跨平台或非 Google Play 渠道的游戏,可考虑 Stripe 和 PayPal 的 SDK 来提供更灵活的支付选项[^3]。 --- #### 二、广告功能集成 广告是许多免费游戏的主要收入来源。 - **AdMob 广告平台**: AdMob 是谷歌提供的广告服务,支持横幅广告、插页式广告和奖励视频广告等多种形式[^4]。 ```xml <!-- 添加 AdView 到布局文件 --> <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-xxxxxxxxxx/yyyyyyyyyy"/> ``` - **Facebook Audience Network (FAN)**: Facebook 提供了一种替代方案,尤其适合目标受众主要集中在社交网络上的游戏[^5]。 --- #### 三、用户登录与账户管理 为了提升用户体验并收集数据,大多数游戏都需要实现用户登录功能。 - **Firebase Authentication**: Firebase 支持多种身份验证方式,包括电子邮件/密码、社交媒体账号(如 Google、Facebook)、以及匿名登录[^6]。 ```java AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, task -> { if (task.isSuccessful()) { Log.d(TAG, "Sign-in successful"); } else { Log.w(TAG, "Sign-in failed", task.getException()); } }); ``` - **OAuth 登录**: 使用 OAuth 协议允许玩家通过其现有的社交媒体账户快速注册和登录[^7]。 --- #### 四、数据分析与崩溃报告 有效的分析工具可以帮助优化游戏性能和用户体验。 - **Crashlytics by Firebase**: Crashlytics 能够实时捕获应用程序中的错误,并帮助开发人员更快地解决问题[^8]。 ```gradle dependencies { implementation 'com.google.firebase:firebase-crashlytics' } ``` - **Amplitude Analytics**: Amplitude 可以跟踪用户的交互行为模式,从而指导产品迭代决策[^9]。 --- #### 五、本地化支持 为了让游戏适应不同地区市场的要求,本地化是一个重要环节。 - **资源文件配置**: 将字符串和其他资源存储在 `res/values` 文件夹下的特定区域子目录中,例如 `values-fr` 表示法语版本[^10]。 ```xml <string name="welcome_message">Bienvenue dans notre jeu</string> ``` - **货币单位转换**: 根据当前设备的语言和地区设置动态调整价格显示格式[^11]。 ```java NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(Locale.getDefault()); String formattedPrice = currencyFormatter.format(priceValue); ``` --- #### 六、推送通知 及时向用户提供更新信息或者促销活动可以通过推送通知完成。 - **Firebase Cloud Messaging (FCM)**: FCM 是一种可靠的消息传递解决方案,适用于发送通知给单个设备或多组设备[^12]。 ```json { "to": "/topics/global", "notification": { "title": "New Event!", "body": "Join us for an exclusive event." }, "data": { "event_id": "12345" } } ``` --- #### 七、云存档同步 保存游戏玩家进度至云端以便他们可以在多个设备间切换继续游玩。 - **Google Drive API / Dropbox API**: 这些服务提供了简单的接口让程序上传下载文件到远程服务器上[^13]。 ```java DriveResource driveFile = getDriveService().files() .create(fileMetadata, mediaContent) .execute(); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值