我按照文档中的所有步骤在我的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>和类路径
先谢谢你。
答案 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文件中。