cccodroid 简体中文

已知问题与未排除的隐患

English

这里列出还没查清根因、也没能完全排除的问题。日常使用中基本碰不到,但我们不想把它们藏起来。碰到了请开 issue,附上「我卡住了 · 打包诊断」生成的 zip 和当时在做什么。

1. 输入法打不进输入框

  • 现象:回复途中或刚回复完,点输入框打字,字上不了屏。只能重开 App 恢复。手机和平板都出现过。
  • 什么时候出现过:目前只在开发时跑自动化测试的那段时间里出现过。当时在做这些事:从 shell 截屏、开系统的模拟副屏(overlay display)、用 ime set 切换输入法、启动别的测试窗口。正常使用时没有复现过。
  • 目前的判断:多半是测试动作的副作用。输入焦点被别的窗口或虚拟屏拿走,回来后 WebView 和输入法的连接没恢复。但没有抓到现场,不能排除 App 本身的问题。
  • 已排除:生成过程中输入框的属性(提示文字等)没有被反复改写。
  • 临时办法:重开 App。
  • 想帮忙查:问题出现时请记下四件事:软键盘有没有弹出来;候选栏里有没有字;换英文键盘或直接粘贴能不能输入;当时开着哪些面板(终端、文件、浏览器)。

2. 对话区偶尔上下滑不动

  • 现象:手指在对话区上下拖动,页面不滚。按钮和输入照常能用。
  • 什么时候出现过:开发端出现过几次,其中一次在上下分屏测试时,发行版多半也有。
  • 已知:冻住时对话区本身是能滚的(用脚本改滚动位置有效),没有遮罩挡着,页面也没被缩放。所以页面没坏,是手指的拖动没变成滚动。
  • 怀疑:系统的手势监听在半路发了 touchcancel,留下半截触摸状态;或者滚动被锁在了别的元素上。没有证实。另外,用 input swipe 注入的滑动在本机 ROM 上会被系统中途取消,测试时得到的结论不可靠,只能用真手指验证。
  • 0.1.19 起的兜底:如果检测到"手指竖着拖了一段、对话区却没动、而它明明还能往那个方向滚",前端会重置一下对话区的滚动状态,并由脚本接管这一下手势剩下的部分。不用重开 App。根因没有修,只是绕过去。
  • 诊断:前端常驻记录最近 100 条触摸、取消和滚动事件(window.__touchLog),兜底每次触发也记在里面。发行版的 WebView 不开调试,所以目前只有开发版能读到这份记录。

3. 折叠屏铰链

宽屏布局不精确避开铰链,因为构建链里没有 Jetpack WindowManager。详见 large-screen.md 的 "Foldable hinge: help wanted"。

4. 非桌面方式启动时一闪而过的灰色蒙层

用 adb、通知等方式(不经桌面图标)冷启动时,安卓 12+ 会先画一层系统启动画面。0.2.0-rc1 起这层已改成与安装页同色、不放图标;但在红魔 9 Pro 上开窗瞬间仍有约半秒的半透明灰色蒙层压在页面上,推测是 ROM 自己的开窗动画,未证实。从桌面图标点开不会出现。

给开发者:测试动作本身会制造假问题

上面第 1、2 条都和自动化测试有关,修之前请先确认不跑测试时也会出现:

  • input swipe / input tap 注入的事件会被一些 ROM 的系统手势监听取消,有时还会多出一下点击。
  • 截屏、开模拟副屏、启动别的窗口、用 ime set 切输入法,都可能把输入焦点或输入法连接从 App 那里拿走。
  • 拖动、滑动、输入法这类问题,以真手指、真输入法的结果为准。

原文:docs/known-issues.zh-CN.md