我是一个正在构建android sdk的团队的新手,我们正在使用sentry来报告崩溃。我必须更新我们与sentry相关的代码,因为显然我们做得不对,因为我们在sentry中得到的崩溃报告不能被正确过滤。我已经阅读过卫兵文档,我看到了发送到卫兵服务器的json对象的示例,但它们没有我目前使用的复杂。从文档中我了解到,我应该为sdk做不同的崩溃报告(与应用程序相比)。如果你能给我一些指导或资源,我将不胜感激。
这就是我报告崩溃的地方:
public static void sendCrashReport(Context context, Throwable throwable) { //todo make cache request
ApiClient client = ServiceGenerator.createService(ApiClient.class);
Call<Void> call = client.crashReport(
"https://sentrypackage/api/<project_id>/store/",
"Sentry sentry_version=6,sentry_client=sentry-java/version,sentry_key=mykey",
CrashReporting.makeReport(context, throwable));
call.enqueue(defaultCallback);
}
@POST()
Call<Void> crashReport(
@Url() String url,
@Header("X-Sentry-Auth") String sentryToken,
@Body SentryCrashModel body);
和CrashReporting.makeReport方法,生成复杂的嵌套json对象,如下所示:
public class SentryCrashModel {
@SerializedName("message")
public String message;
@SerializedName("timestamp")
public String timestamp;
@SerializedName("platform")
public String platform;
@SerializedName("contexts")
public ContextModel contexts;
@SerializedName("tags")
public TagsModel tags;
@SerializedName("sentry.interfaces.Exception")
public ExeptionModel crashElement;
@SerializedName("sentry.interfaces.User")
public UserModel user;
}
所以我想知道我到底应该如何发送崩溃给卫兵,它的确切结构是什么,我想知道我是否做错了。当我测试我的sdk时,我在IDE中没有得到任何错误,但是我不能正确地过滤我的报告。
发布于 2020-10-12 21:51:48
Sentry为所有主要语言和框架构建SDK。有一个适用于Android的SDK,文档在这里:
https://docs.sentry.io/platforms/android/
你可以在Sentry中创建一个新项目,选择platform Android,向导会告诉你安装步骤。上面的docs链接中也有相同的步骤。
简而言之,将SDK添加到应用程序的gradle文件中:
dependencies {
implementation 'io.sentry:sentry-android:3.0.0'
}
然后添加Sentry DSN (告诉Sentry的SDK应该将事件发送到何处的URL ):
例如(确保添加您自己的DSN,在创建项目时在sentry.io上获取,或在项目设置中的“客户端密钥”中获取):
将此代码添加到AndroidManifest.xml中:
<application>
<meta-data android:name="io.sentry.dsn" android:value="__DSN__" />
</application>
这就是捕获ANR、未捕获的异常、来自NDK的本机(C/C++)崩溃和跟踪the health of your releases所需做的全部工作。
SDK提供了一个接口,您可以使用它来向发送给Sentry的事件添加更多的数据,过滤掉一些东西,并捕获一些自定义的消息或异常,例如通过try catch
。检查文档中的内容。
如果您正在使用proguard
,那么您可能需要对其进行配置。文档中有更多详细信息。
https://stackoverflow.com/questions/64294208
复制