我知道这个问题已经被问过很多次了,不同的形式,但没有找到任何工作和更新的解决方案,与GAv4工作。
到目前为止,我遵循了这些link1和link2,用于跟踪带有一些自定义更改的异常报告,
public class MyApplication extends Application {
/**
* The Analytics singleton. The field is set in onCreate method override
* when the application class is initially created.
*/
private static GoogleAnalytics analytics;
/**
* The default app tracker. The field is from onCreate callback when the
* application is initially created.
*/
private static Tracker tracker;
/**
* Access to the global Analytics singleton. If this method returns null you
* forgot to either set android:name="<this.class.name>" attribute on
* your application element in AndroidManifest.xml or you are not setting
* this.analytics field in onCreate method override.
*/
public static GoogleAnalytics analytics() {
return analytics;
}
/**
* The default app tracker. If this method returns null you forgot to either
* set android:name="<this.class.name>" attribute on your application
* element in AndroidManifest.xml or you are not setting this.tracker field
* in onCreate method override.
*/
public static Tracker tracker() {
return tracker;
}
@Override
public void onCreate() {
super.onCreate();
analytics = GoogleAnalytics.getInstance(this);
// TODO: Replace the tracker-id with your app one from
// https://www.google.com/analytics/web/
tracker = analytics.newTracker("UA-**********");
// Provide unhandled exceptions reports. Do that first after creating
// the tracker
tracker.enableExceptionReporting(true);
// Enable Remarketing, Demographics & Interests reports
// https://developers.google.com/analytics/devguides/collection/android/display-features
tracker.enableAdvertisingIdCollection(true);
}
}
在GAv4"描述"有发送异常的100个字符的限制,但我如何成功地设法扩展该限制并发送stackTrace如下,
try {
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// Get full error message from prinStrackTrace
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
String errorMessage = "em-" + extraMessage + "||pst-"
+ errors.toString();
Log.e(TAG, "errorMessage = " + errorMessage);
MyApplication.tracker().send(
new HitBuilders.ExceptionBuilder()
.setDescription(errorMessage).setFatal(false)
.build());
}
}
这是捕获异常,但现在我想发送详细的stacktrace崩溃报告未捕获的异常。此链接有助于获取未捕获异常,但没有提供GA中的太多细节。我确实找到了这种方法,但这基本上是为GAv2。
Q1:所以我上面的方法发送堆栈跟踪捕获异常将与未来的GA工作,或者有任何其他方法来获得详细描述的确切原因错误,类名和行号?
Q2:如何发送完整的堆栈跟踪或任何确切有用的描述来找到未捕获异常的原因?
Q3:我知道ACRA,但是否有免费的后端?
您可以使用自定义维度从Exception对象中捕获任何附加信息。
添加:
.setCustomDimension(1, e.getMessage())
到ExceptionBuilder代码中。注意,您需要首先在web界面中创建自定义尺寸。
Q1:由于没有人知道GA的未来版本会是什么样子,所以这个问题是无法回答的。
Q3: ACRA后端有开源实现。看看https://github.com/ACRA/acra/wiki/Backends。但是你需要为他们安排托管。另外,许多商业版本提供相当合理的免费配额和合理的计划。