OPPO Find X9全面评测:性能影像双优,购机指南
|
亲历现场。那版系统提测前四十八小时,我蹲在OPPO松山湖外包区三号工位,左手边堆着七台Find X9,屏幕全亮着“OPPO Find X9全面评测:性能影像双优,购机指南”这行字——不是我们写的,是市场部塞进系统UI预装页的硬广弹窗,点进去跳转自营商城。我原以为就改个intent filter加个白名单,结果点开一看,弹窗底下压着个没显影的浮层ViewGroup,zOrder崩了,手指划过去根本点不透,商城页面卡死在半透明灰底上。 测试妹子小林站我身后第三回了,指甲掐着笔记本边缘念“第十七次复现”,声调平得像在报温度。我让她再截一次logcat,她把手机倒扣桌上,机械键盘咔哒一声响——青轴,打字带顿挫感,每敲一个字母都像在锤焊点。窗外洒水车刚好拐过园区环路,哗啦——水柱扫过玻璃,整面落地窗雾了三秒,水痕往下淌的时候,我盯着其中一条歪斜的线,突然想起上周五对接人老陈发来的需求文档里写“浮层需支持手势穿透”,括号里手写补了句“客户确认OK”。我截图问他,他回了个“?”加个笑哭表情包,再没下文。 那个浮层真邪门。它不是没注册事件,是onTouchEvent返回了true,但dispatchTouchEvent在中途被截了,debug发现是SystemUI偷偷inject了个InputInterceptor——但只对这个弹窗生效。我扒了三方SDK混淆后的smali,翻到一行注释:// X9专属适配 by O-UI Team v2.1。没人告诉过我们有这个玩意儿,也没文档,连版本号都是我从resources.arsc里反查字符串表抠出来的。我把这段贴进外包群,群里静了十八秒,老张回:“你确定没看错?我刚跑X8是好的。”我说我敢打包票,他那边立刻发来一张X8的Log截图,timestamp差七分钟,但loglevel全设成VERBOSE,密密麻麻刷屏,根本找不到关键堆栈——他连grep都懒得打,纯靠肉眼扫。 楼下便利店关东煮的香气飘上来过两次。第一次是晚饭点,老板娘喊“萝卜卖完啦”,声音闷在玻璃里;第二次是凌晨一点,她收拾摊子时铝锅盖哐当撞桶,我正对着adb shell dumpsys activity top抓帧率曲线,手机屏幕蓝光映在对面玻璃墙上,照出我自己眼睛里的血丝。测试机堆在窗台晒了一整天,最上头那台后壳发烫,摸着像刚焊完的PCB,摄像头模组位置烫得不敢多碰——可它偏偏是唯一一台能正常点穿浮层的,其他六台全卡。我换了三台新烧录的固件,重刷两遍基线,最后把它塞进冷凝箱降温五分钟,再拿出来——好了。我就坐在那儿,看着它在十五度恒温下乖乖工作,心里想的是:这东西到底认温度还是认出厂批次?我说不准。 还有个事特别滑稽。我们按惯例在Settings > Developer options里埋了个隐藏开关叫“Force UI Overlay”,方便QA绕过所有浮层直接进功能页。结果那天早上老陈说“客户觉得太暴露,砍掉”。我们删完代码打包,下午三点,测试妹子举着手机冲进来:“浮层点不进了!”我抓过来看,发现是系统自动fallback到旧版Overlay逻辑,但路径没清理干净——/data/data/com.android.systemui/shared_prefs/ui_overlay.xml还躺在那儿,值是true,而新代码根本不去读它。我们删的是Java层调用,不是配置项。这种事在小米干过,在vivo也见过,但OPPO这版系统,它连xml文件都不肯随安装包清空,非要等到下次ota才顺手抹掉。我修的时候手抖,把SharedPreferences的commit写成了apply,结果弹窗点了三次才响应——不是延迟,是第三次点击触发了上一次commit的回调。这种事儿,编不出细节,只有亲手被坑过的人才信。 我原以为是布局嵌套太深,结果用Layout Inspector拖拽十几次,发现真正致命的是TextView里那段“购机指南”的ellipsize属性,设成了MARQUEE,但marqueeRepeatLimit=1。系统底层有个动画状态机,只要TextView获得焦点且marquee跑完一遍,就会强制重绘整个DecorView,连带把浮层的surface销毁重建——而重建间隙里,InputDispatcher缓存区溢出,后续点击全丢弃。这个我敢打包票,因为我在X9工程机上用ADB禁掉了marquee动画,浮层立刻可点。但同一套代码在X8上跑得好好的,X8用的textview渲染路径压根不走那个状态机……为什么?没人讲清楚。 说到X8,我桌上还有台没拆封的X8样机,塑料膜都没撕。上次去产线巡检,看到产线上X8主板和X9混着过锡炉,但BOM单上差两个滤波电容。我问工程师,他说“厂里说不影响,O-UI自己扛”。我点头走了,回来把这句话记在便签上,贴在显示器右下角,现在卷边了,胶有点发黄。
产品概念图,仅供参考 反正今晚先提个临时patch,把ellipsize切回END,marquee关死,浮层zOrder手动拨高两级。明天早上八点前,老陈要看到可用包。至于那个InputInterceptor的hook点在哪——我打算等下周去趟松山湖,找O-UI Team的王工当面喝杯咖啡。他上回说他们用的内部工具链不对外,但我看见他微信头像背景里有张图,角落露出半行命令:./toolchain/build-overlay.sh --strict-mode。工具名我都记住了。别的先不管,先把这七台机子的窗台腾出来,热坏了真怕烧屏。(编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

