You need to enable JavaScript to run this app. 如何获取Android设备型号并设置条件配置Sentry ANR超时规则
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 12:06:02