Android简单集成sentry-android:4.3.0做异常监控

我是在集团已经搭建好私有化Sentry服务的情况下做客户端SDK集成,根据Android | Sentry Documentation官方文档配置两个build.gradle。

// 在项目的build.gradle的repositories节点下加入mavenCentral仓库的引用
repositories {
    mavenCentral()
}

// 在app的build.gradle中配置使用jdk1.8
android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
}

// 在app的build.gradle中加入sentry-android的依赖
dependencies {
    implementation 'io.sentry:sentry-android:4.3.0'
}

然后在AndroidManifest.xml的application节点下加入DSN配置。

<application>
  <meta-data android:name="io.sentry.dsn" android:value="项目的DSN" />
</application>

项目DSN在管理后台的【设置-项目】页面选择你的项目,进入项目的设置页面后,选择Client Keys(DSN)就可以看到DSN值。

按照官方文档的说明,此时已经可以正常上传崩溃日志了,但不知道是不是私有化的问题,我这里无论如何修改,使用自动初始化、手动初始化等都无法上报异常,且Log显示Sentry组件无法访问外部存储,这个提示误导了我,花了半天时间在找这块的原因,后来放弃挣扎,继续完成ProGuard配置后,居然就能正常上报了······

Sentry关于ProGuard的配置,官方文档只说了大概,有些细节还需要注意。首先在项目的build.gradle中加入sentry-android-gradle-plugin的配置。

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        // https://github.com/getsentry/sentry-android-gradle-plugin/releases
        classpath 'io.sentry:sentry-android-gradle-plugin:1.7.36'
    }
}

然后在app的build.gradle中加入:

apply plugin: 'io.sentry.android.gradle'

sentry {
    // Disables or enables the automatic configuration of ProGuard
    // for Sentry.  This injects a default config for ProGuard so
    // you don't need to do it manually.

    // Only enable it if you are using sentry-android <= v1.7,
    // sentry-android >= v2.0 already does it automatically.
    autoProguardConfig false

    // Enables or disables the automatic upload of mapping files
    // during a build.  If you disable this, you'll need to manually
    // upload the mapping files with sentry-cli when you do a release.
    autoUpload true

    // Disables or enables the automatic configuration of Native Symbols
    // for Sentry. This executes sentry-cli automatically so
    // you don't need to do it manually.
    // Default is disabled.
    uploadNativeSymbols false

    // Does or doesn't include the source code of native code for Sentry.
    // This executes sentry-cli with the --include-sources param. automatically so
    // you don't need to do it manually.
    // Default is disabled.
    includeNativeSources false
}

配置好两个gradle后,还需要在项目根目录新建sentry.properties,内容为

defaults.project=项目名
defaults.org=组织名,是组织id,不是显示的名称
defaults.url=这里官方没说,因为只有私有化服务需要配置,值就是私有化服务的ip\host:port
auth.token=这个token是管理后台的个人账号的设置页里的API下的Auth Tokens中,如果没有就新建一个,配置就用默认的即可

至此,已经可以正常使用异常上报了,关于手动初始化和配置,可以查看官方文档说明,大致就是AndroidManifest.xml中的application节点下加入

<meta-data android:name="io.sentry.auto-init" android:value="false" />

然后就可以在自定义Application类的onCreate中手动配置初始化

SentryAndroid.init(this) {
            it.setDebug(true)
            it.cacheDirPath = externalCacheDir?.absolutePath ?: cacheDir.absolutePath // 默认就是cacheDir,即data\data\包名\cache
            it.environment = "test" // 环境标识,如生产环境、测试环境,随便自定义字符串
            it.beforeSend = SentryOptions.BeforeSendCallback { event, hint ->
                // BeforeSendCallback主要就是上传前的拦截器,比如设置debug数据不上报等,具体看需求
                return@BeforeSendCallback if (event.level == SentryLevel.DEBUG) null else event
            }
        }

还有很多自定义配置,可以根据项目需求去探索。

PS:如果服务器用的http协议,而设备是9.0及以上版本,则需要在application标签配置允许http请求。

PPS:DSN是服务器配置生成的,如果服务端配了内网地址和端口,客户端这边需要注意将ip:port那一截改成外网地址和端口,或者域名。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容