You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI应用Firebase Messaging正常但Crashlytics无法绑定问题

.NET MAUI Android Firebase Crashlytics 未被控制台检测到的修复方案

核心问题分析

日志显示Crashlytics已完成初始化,但控制台未出现"App detected",大概率是版本不兼容、初始化不完整或未触发崩溃报告上传导致。

修复步骤

1. 统一Firebase包版本

Xamarin.Firebase.Core(121.1.1)与Xamarin.Firebase.Crashlytics(118.3.2)版本差距过大,存在隐性兼容问题。需替换为同版本家族的兼容包:

  • 移除现有Firebase相关包,通过NuGet安装匹配版本:例如Xamarin.Firebase.Core 121.1.1搭配Xamarin.Firebase.Crashlytics 18.6.2(可通过NuGet依赖关系确认具体兼容版本)
  • 确保.csproj中包引用版本一致:
    <ItemGroup Condition="'$(TargetFramework)' == 'net8.0-android'">
        <GoogleServicesJson Include="google-services.json" />
        <PackageReference Include="Xamarin.Firebase.Core" Version="121.1.1" />
        <PackageReference Include="Xamarin.Firebase.Crashlytics" Version="18.6.2" />
    </ItemGroup>
    

2. 完善Android端Crashlytics初始化

当前仅初始化FirebaseApp,需补充Crashlytics的启用配置:
修改MauiProgram.cs中的Android生命周期代码:

builder.ConfigureLifecycleEvents(events =>
{
#if IOS
    // iOS代码保持不变
#else
    events.AddAndroid(android => android.OnCreate((activity, bundle) => {
        Firebase.FirebaseApp.InitializeApp(activity);
        // 新增Crashlytics初始化与启用逻辑
        var crashlytics = Firebase.Crashlytics.FirebaseCrashlytics.Instance;
        crashlytics.SetCrashlyticsCollectionEnabled(true);
        crashlytics.SendUnsentReports();
    }));
#endif
});

3. 调整string.xml配置

移除固定的com.crashlytics.android.build_id配置,让Crashlytics自动生成构建ID;仅保留google_app_id即可:

<resources>
    <string name="google_app_id">你的实际APP ID</string>
</resources>

4. 验证google-services.json配置

  • 确保文件放置在Android项目根目录
  • 右键文件→属性,确认Build Action设置为GoogleServicesJson
  • 核对文件中的package_name与项目包名com.companyname.bookmateui完全一致

5. 触发测试崩溃激活控制台检测

Crashlytics需收到至少一份崩溃报告才会在控制台显示"App detected":
在应用中添加测试崩溃触发逻辑,例如按钮点击事件:

private void OnTestCrashClicked(object sender, EventArgs e)
{
    throw new InvalidOperationException("Test Crash for Firebase Crashlytics");
}
  • 运行应用,点击触发崩溃
  • 重启应用(Crashlytics会在重启时上传崩溃报告)
  • 等待5-10分钟后刷新Firebase控制台

6. 检查必要权限

确保AndroidManifest.xml中包含联网权限:

<uses-permission android:name="android.permission.INTERNET" />

内容的提问来源于stack exchange,提问作者Nicoara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:31:00