天坦读屏8.6.0在安卓16/HyperOS3崩溃ANR反馈

6 提笔写忧伤落笔映浮华 5天前 155次点击

天坦读屏 8.6.0 崩溃 / ANR 反馈报告

反馈类型:稳定性问题 / 崩溃 / ANR

涉及版本:天坦读屏 8.6.0,包名 com.android.tback,versionCode 147

系统环境:Redmi / Xiaomi,HyperOS 3.0,Android 16,SDK 36


一、问题概述

近期在 Redmi K80 至尊版 / HyperOS 3.0 / Android 16 环境下,天坦读屏出现两类比较明显的稳定性问题:

  1. 手势处理路径 Java 主线程崩溃SoundBackService.onGesture -> SoundBackService.a2 路径中疑似对只读集合执行 clear 或修改操作,触发 UnsupportedOperationException
  2. 熄屏 / 亮屏广播处理频繁 ANRcom.android.tback/e7.g 处理 SCREEN_OFF / SCREEN_ON 时发生后台 ANR,并被系统以 bg anr kill。

二、设备与系统信息

  • 设备厂商:Xiaomi / Redmi
  • 型号:25060RK16C
  • 设备代号:dali
  • Android:16
  • SDK:36
  • 系统版本:OS3.0.302.0.WONCNXM
  • 系统指纹:Redmi/dali/dali:16/BP2A.250605.031.A3/OS3.0.302.0.WONCNXM:user/release-keys
  • HyperOS:ro.mi.os.version.name=OS3.0
  • MIUI UI:ro.miui.ui.version.name=V816

三、应用信息

  • 包名:com.android.tback
  • 版本:8.6.0
  • versionCode:147
  • minSdk:26
  • targetSdk:35
  • 安装时间:2026-04-13 01:56:50
  • 更新时间:2026-05-30 12:08:46

四、问题 1:手势处理路径 Java 崩溃

崩溃时间:06-13 10:18:29.342

异常类型:java.lang.UnsupportedOperationException

异常信息:Operation is not supported for read-only collection

关键路径:SoundBackService.onGesture -> SoundBackService.a2(...:400)

java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
    at I5.A.clear(...)
    at k7.e.n(...)
    at k7.e.l(...)
    at k7.e.k(...)
    at k7.r.a(...)
    at k7.u.m(...)
    at k7.u.n(...)
    at V6.h.B(...)
    at V6.h.C(...)
    at V6.h.D(...)
    at E6.V0.B(...)
    at Z6.l.e(...)
    at Z6.l.d(...)
    at net.tatans.soundback.SoundBackService.a2(...:400)
    at net.tatans.soundback.SoundBackService.onGesture(...:2)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loopOnce(Looper.java:274)
    at android.os.Looper.loop(Looper.java:369)
    at android.app.ActivityThread.main(ActivityThread.java:10090)

初步判断:这是明确的应用 Java 层主线程崩溃,不是系统后台清理。触发点在手势处理链路中,疑似将不可变 / 只读集合当作可变集合使用。

建议重点检查

  • net.tatans.soundback.SoundBackService.onGesture
  • net.tatans.soundback.SoundBackService.a2 line 400

可能原因

  • 使用 Collections.emptyList() / Collections.unmodifiableList() 后直接 clear
  • Kotlin listOf() 返回只读 List,却被当作 MutableList 使用。
  • 手势动作列表、快捷动作列表、菜单项列表等复用了不可变集合。
  • 反序列化或缓存中的集合被错误地原地修改。

修复建议:修改前复制为可变集合,例如 Kotlin 中使用 oldList.toMutableList();或者避免直接修改传入集合。


五、问题 2:SCREEN_OFF / SCREEN_ON 广播处理 ANR

系统事件中捕获到的 ANR 示例:

06-14 10:00:22.993 I am_anr:
[0,4986,com.android.tback,818429508,
 Broadcast of Intent { act=android.intent.action.SCREEN_OFF flg=0x50200010 cmp=com.android.tback/e7.g }]

06-14 10:00:24.308 I am_kill:
[0,4986,com.android.tback,0,bg anr,440984]

06-14 10:00:24.393 I am_schedule_service_restart:
[0,com.android.tback/net.tatans.soundback.SoundBackService,1000]

现象说明:com.android.tback 在处理熄屏广播时发生后台 ANR,随后被系统 kill,并重启 SoundBackServiceNotificationServiceTatansImeService 等相关服务。

Dropbox 中多次出现的主题

  • Broadcast of Intent { act=android.intent.action.SCREEN_OFF ... cmp=com.android.tback/e7.g }
  • Broadcast of Intent { act=android.intent.action.SCREEN_ON ... cmp=com.android.tback/e7.g }

典型栈涉及

  • SoundBackService.J0
  • SoundBackService.H0
  • SoundBackService.M0
  • SoundBackService.uncaughtException

多次同时出现的 native 库

  • libmsc.so
  • libtatansAi.so
  • libmindspore-lite-ocr.so
  • libmarsxlog.so

初步怀疑:熄屏 / 亮屏广播处理路径中同步执行了耗时操作,或者等待 native 线程 / 语音识别 / TTS / AI / OCR / 日志 flush / 资源释放,导致 BroadcastReceiver 超时。

建议修复方向

  • 不要在 BroadcastReceiver.onReceive() 或主线程同步执行耗时操作。
  • 如必须异步处理,可使用 goAsync() + 后台线程,并加超时保护。
  • native 模块释放、模型释放、语音引擎停止、日志 flush 等不要阻塞主线程。
  • 重点检查 libmsc、AI、OCR、xlog 等模块在熄屏时是否存在 join / wait / flush 死等。

六、异常记录摘要

  • 2026-06-11 18:03:26:data_app_anr,SCREEN_OFF -> com.android.tback/e7.g
  • 2026-06-11 19:58:01:data_app_anr,SCREEN_ON -> com.android.tback/e7.g,涉及 libmsc.so
  • 2026-06-11 22:18:22:data_app_anr,涉及 libmsc.solibtatansAi.so
  • 2026-06-11 22:55:13:data_app_anr,涉及 libmindspore-lite-ocr.solibmsc.solibtatansAi.so
  • 2026-06-12 10:44:05:data_app_crashUnsupportedOperationException
  • 2026-06-13 02:28:45:data_app_crash,栈涉及 SoundBackService.a2 / onGesture
  • 2026-06-14 10:00:24:data_app_anr,SCREEN_OFF -> com.android.tback/e7.g

七、额外日志现象

AppOps: attributionTag not declared in manifest of com.android.tback
Noting op not finished: uid 10482 pkg com.android.tback code 154

这不一定是直接崩溃原因,但建议顺手检查音频焦点、无障碍朗读、录音或系统权限统计相关 API 是否存在未正常结束的调用。


八、结论

天坦读屏 8.6.0 在 Android 16 / HyperOS 3.0 环境下目前观察到两类问题:

  1. 手势处理链路崩溃:SoundBackService.onGesture -> a2 中疑似修改只读集合,导致 UnsupportedOperationException
  2. 熄屏 / 亮屏广播 ANR:com.android.tback/e7.g 处理 SCREEN_OFF / SCREEN_ON 时频繁 ANR,被系统以 bg anr kill,栈中多次涉及 SoundBackService.H0/J0/M0 以及 libmsc.solibtatansAi.solibmindspore-lite-ocr.so

我本地保留了完整采集日志,文件名包括:

  • tback_crash_report_20260614_124338.txt
  • tback_developer_feedback_20260614_125324.txt

如果开发者需要完整日志,我可以继续补充上传或贴出关键片段。

共 3 条评论
0 
我勒个去了,连解决这个问题的这个方法都弄出来了,这管理员一看还挺有用,可以解决岂不美哉。
0 

我的K90Pro Max也偶尔出现这个情况。不知道是,澎湃OS本身的原因还是两边都有问题。

添加一条新评论

登录后可以发表评论 去登录