首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我发送给卫兵的坠机报告到底应该是什么样子的?

我发送给卫兵的坠机报告到底应该是什么样子的?
EN

Stack Overflow用户
提问于 2020-10-10 21:56:29
回答 1查看 372关注 0票数 1

我是一个正在构建android sdk的团队的新手,我们正在使用sentry来报告崩溃。我必须更新我们与sentry相关的代码,因为显然我们做得不对,因为我们在sentry中得到的崩溃报告不能被正确过滤。我已经阅读过卫兵文档,我看到了发送到卫兵服务器的json对象的示例,但它们没有我目前使用的复杂。从文档中我了解到,我应该为sdk做不同的崩溃报告(与应用程序相比)。如果你能给我一些指导或资源,我将不胜感激。

这就是我报告崩溃的地方:

代码语言:javascript
代码运行次数:0
运行
复制
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);
    }
代码语言:javascript
代码运行次数:0
运行
复制
    @POST()
    Call<Void> crashReport(
            @Url() String url,
            @Header("X-Sentry-Auth") String sentryToken,
            @Body SentryCrashModel body);

和CrashReporting.makeReport方法,生成复杂的嵌套json对象,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
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中没有得到任何错误,但是我不能正确地过滤我的报告。

EN

回答 1

Stack Overflow用户

发布于 2020-10-13 05:51:48

Sentry为所有主要语言和框架构建SDK。有一个适用于Android的SDK,文档在这里:

https://docs.sentry.io/platforms/android/

你可以在Sentry中创建一个新项目,选择platform Android,向导会告诉你安装步骤。上面的docs链接中也有相同的步骤。

简而言之,将SDK添加到应用程序的gradle文件中:

代码语言:javascript
代码运行次数:0
运行
复制
dependencies {
    implementation 'io.sentry:sentry-android:3.0.0'
}

然后添加Sentry DSN (告诉Sentry的SDK应该将事件发送到何处的URL ):

例如(确保添加您自己的DSN,在创建项目时在sentry.io上获取,或在项目设置中的“客户端密钥”中获取):

将此代码添加到AndroidManifest.xml中:

代码语言:javascript
代码运行次数:0
运行
复制
<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,那么您可能需要对其进行配置。文档中有更多详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64294208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档