如何获取Android设备型号并设置条件配置Sentry ANR超时规则
Sentry针对指定设备动态调整ANR超时配置方案
AndroidManifest中配置的meta-data是全局静态参数,无法根据设备机型动态调整,因此需要移除该静态配置,改用代码动态初始化Sentry时按需设置超时时间,具体实现步骤如下:
步骤1:移除AndroidManifest中的静态配置
删掉你之前添加的io.sentry.anr.timeout-interval-mills对应的meta-data代码段,避免静态配置覆盖后续的动态参数。
步骤2:添加设备机型判断逻辑
新增工具方法判断当前设备是否为需要延长超时的目标机型:
// Kotlin 示例 fun isTargetAnrDevice(): Boolean { val targetModels = setOf( "Mi A2 Lite", // 小米对应机型 "SM-A605FN" // 三星对应机型 ) return Build.MODEL in targetModels }
// Java 示例 private boolean isTargetAnrDevice() { Set<String> targetModels = new HashSet<>(); targetModels.add("Mi A2 Lite"); targetModels.add("SM-A605FN"); return targetModels.contains(Build.MODEL); }
步骤3:Sentry初始化时动态设置ANR超时
在Application的onCreate方法中初始化Sentry时,根据设备类型设置不同的超时时间:
// Kotlin 示例 Sentry.init(this) { options -> // 普通设备保持你原先设置的15000ms超时,可按需调整 val anrTimeout = if (isTargetAnrDevice()) { 25000L // 目标特殊设备延长到25s,可根据实际业务情况修改时长 } else { 15000L } options.anrTimeoutIntervalMillis = anrTimeout // 其他原有Sentry配置保持不变,比如DSN设置、采样率设置等 options.dsn = "你的Sentry DSN地址" }
// Java 示例 Sentry.init(this, options -> { long anrTimeout; if (isTargetAnrDevice()) { anrTimeout = 25000L; // 目标设备超时25s } else { anrTimeout = 15000L; // 普通设备超时15s } options.setAnrTimeoutIntervalMillis(anrTimeout); // 其他原有配置保持不变 options.setDsn("你的Sentry DSN地址"); });
验证方式
- 调试阶段可在初始化代码处加日志,确认不同机型下的超时参数赋值符合预期
- 上线后可在ANR上报的自定义标签中附加当前使用的超时时间,确认配置生效
内容的提问来源于stack exchange,提问作者Molotow
相关产品推荐
相关产品推荐

