将未捕获的异常发送到 google 分析

Send uncaught exception to google analytic

我试图将未捕获的异常发送给 google 分析两周,但我找不到一个完整的例子来解释我如何做到这一点,我找到了很多例子,但它们并不完整,也没有为我工作,甚至 google-developer 也不清楚,也没有从头到尾解释。 有人知道任何解释如何逐步执行此操作的资源吗?

假设您已经为您的项目设置了 Google Analytics 并且您正在使用 Google Analytics V4,您需要做的就是将以下内容添加到您的 Google Analytics XML配置文件:

<bool name="ga_reportUncaughtExceptions">true</bool>

来源:Crashes & Exceptions Google Analytics Android SDK 的文档。

集成 Google Analytics 并只为 Android 发送未经处理的异常的最简单方法是:

  1. 将最新的 Google Play 服务与您的应用集成。 Link to instructions here。不要忘记将播放服务版本元元素添加到您的 AndroidManifest.xml,它是 Analytics 正确运行所必需的:

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
    
  2. 创建应用 class,在 Google Analytics github 上扩展 android.app.Application and override onCreate method. See the minimal Google Analytics Hello World app 作为示例。

  3. 在您的应用 onCreate 覆盖初始化 Google 分析,创建您的默认应用跟踪器并启用异常报告。您不需要 xml 配置。从代码中做到这一点更简单:

    private static GoogleAnalytics analytics;
    private static Tracker tracker;
    @Override
    public void onCreate() {
        super.onCreate();
        analytics = GoogleAnalytics.getInstance(this);
        tracker = analytics.newTracker("UA-00000-1"); // Replace with your tracker id
        tracker.enableExceptionReporting(true);
    }
    
  4. 将必需的(和可选的)权限添加到您的清单中。分析需要网络来发送您的点击。可选的唤醒锁权限有助于可靠调度:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- optional wake lock permission -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    

    5.Register 通过将 AndroidManifest.xml 中应用程序元素的名称属性设置为您的应用程序,将您的应用程序作为应用程序实现 class:

    <application android:name=".YourAppClass" ... />
    
  5. 在您的 AndroidManifest.xml:

    中注册推荐的 AnalyticsReceiver 和 AnalyticsService
    <application>
        ...
        <!-- Enable background dispatching to improve delivery on non-Google Play devices -->
        <receiver
        android:name="com.google.android.gms.analytics.AnalyticsReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH"/>
            </intent-filter>
        </receiver>
        <service
            android:name="com.google.android.gms.analytics.AnalyticsService"
            android:enabled="true"
            android:exported="false"/>
        ...
    </application>