如何启用Firebase崩溃报告 - Android

时间:2016-05-23 14:05:13

标签: android firebase firebase-crash-reporting

我按照文档中的所有步骤在我的Android应用中使用Firebase崩溃报告(我使用Android Studio,一切都是最新的)。

我使用自己的代码抛出异常以查看它是否有效:

try {
    throw new NullPointerException();
} catch (NullPointerException ex) {
    FirebaseCrash.logcat(Log.ERROR, TAG, "NPE caught");
    FirebaseCrash.report(ex);
}

控制台给我这个日志:

  

E / MainActivity:NPE抓住了

     

V / FirebaseCrash:已禁用Firebase崩溃报告。

这是一个build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'

        // Firebase - Google Services 3.0.0
        classpath 'com.google.gms:google-services:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这是另一个build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-N'
    buildToolsVersion '24.0.0-rc2'

    defaultConfig {
        applicationId "com.app.test"
        minSdkVersion 19
        targetSdkVersion 'N'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            useProguard true
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:24.0.0-alpha1'
    compile 'com.android.support:appcompat-v7:24.0.0-alpha1'
    compile 'com.android.support:design:24.0.0-alpha1'
    compile 'com.google.firebase:firebase-core:9.0.0'
    compile 'com.google.firebase:firebase-analytics:9.0.0'
    compile 'com.google.firebase:firebase-crash:9.0.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    compile 'com.google.firebase:firebase-config:9.0.0'
    compile 'com.google.firebase:firebase-invites:9.0.0'
    compile 'com.google.android.gms:play-services-appindexing:9.0.0'
}

apply plugin: 'com.google.gms.google-services'

我也用:

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
FirebaseMessaging.getInstance().subscribeToTopic("news");
Log.d(TAG, "Subscribed to news topic");

我添加了我需要的所有依赖项,但我逐个添加并逐个测试,Notifications有效,分析:不知道,更新大约需要24小时,所以在此之前,我不知道是否有效...

那么,问题是如何启用它呢?

注意:我添加了所有依赖项,包括崩溃核心,还有插件< / strong>和类路径

先谢谢你。

6 个答案:

答案 0 :(得分:20)

请注意以下事项:

  • 添加SDK后,您可以尝试使用:

    FirebaseCrash.report(new Exception("My first Android non-fatal error"));

  • 错误最多需要20分钟才会显示在崩溃报告控制台中。请回来查看您的报告。

  • (看起来很明显但是)请确保您拥有:INTERNET and ACCESS_NETWORK_STATE权限。

答案 1 :(得分:5)

在我的应用程序中正确设置崩溃报告后,崩溃报告也无效。为了解决这个问题,我访问了我的开发人员控制台API Manager,并启用了“Mobile Crash and Performance Reporting API”。要准确了解您需要执行此操作的位置,请按照this page.

上的步骤操作

如果您按照上面链接中的步骤操作,那么包含文本“E / FirebaseCrashSenderServiceImpl:错误发送崩溃报告”的logcat会为您提供一个URL,指示您必须在控制台中启用崩溃报告的位置。

答案 2 :(得分:1)

不推荐使用FirebaseCrash。应该改用FirebaseCrashlytics.getInstance():

FirebaseCrashlytics.getInstance().log(message)
FirebaseCrashlytics.getInstance().recordException(throwable)

来源:https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#add-logs

答案 3 :(得分:0)

添加以下代码: 在Project-level build.gradle(/build.gradle)中:

select distinct month(o.orderdate) 'Month',
     year(o.orderdate) 'Year', sum(od.Quantity) as Orders 
from     OrderDetails od 
join     Products p
on       od.ProductID = p.ProductID
join     Orders o
on       od.OrderID = o.OrderID
group by month(o.orderdate), year(o.orderdate)
Order by [Year],[month]

在App-level build.gradle(//build.gradle)中:

buildscript {
dependencies {

// Add this line
classpath 'com.google.gms:google-services:3.0.0'
}
}

现在同步您的项目, 在您的活动中使用以下代码来抛出异常:

// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'


//Add following in In App-level build.gradle
compile 'com.google.firebase:firebase-crash:9.0.0'

使用firebase检查android crash reporting教程以获取完整指导。

答案 4 :(得分:0)

我有同样的问题。事实证明我在项目gradle文件中缺少依赖项。尝试添加此功能。它应该有所帮助。

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");

var x = canvas.width/2;
var y = canvas.height-30;

var dx = 4;
var dy = -4;

var ballRadius = 30;

function drawBall() {                         \\draws the ball
    ctx.beginPath();
    ctx.arc(x, y, ballRadius, 0, Math.PI*2);
    ctx.fillStyle = "#ff0000";
    ctx.fill();
    ctx.closePath();
}

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    drawBall();
    x += dx;
    y += dy;
    if(x + dx > canvas.width-ballRadius || x + dx < ballRadius) {    \\says when to bounce
        dx = -dx;
        drawBall.ctx.fillStyle = "#ff0000";    \\this line and next line are lines I wrote
        drawBall.ctx.fill();                   \\that are obviously incorrect (same goes for
    }                                          \\ if statement below). What am I doing wrong?
    if(y + dy > canvas.height-ballRadius || y + dy < ballRadius) {
        dy = -dy;
        drawBall.ctx.fillStyle = "#0095DD";
        drawBall.ctx.fill();
    }
}
setInterval(draw, 10);

答案 5 :(得分:0)

您应该花一些时间显示。即使documentation指出错误会在5分钟内显示出来,也可能需要15-20分钟。另外,如果您使用本机开发,则必须通过迁移将旧模块更改为AndroidX。最后,确保所有工具和插件都添加到适当的Gradle文件中。