真我13震撼登场!越级性能+电竞屏,硬核玩家首选
|
亲历现场。那晚十一点四十七,真我13的系统预装包压在我本地 repo 里没签上,签名校验过不去——不是 SHA256 对不上,是签名链里第三层那个 vendor cert 的 subjectDN 里多塞了个空格,厂方给的文档里压根没提这事儿,连个注释都没有。我原以为是 gradle 插件版本冲突,结果抓包看 keystore 加载过程才发现,是 build-server 上那台旧版 JDK 11.0.18 在解析 DER 时把 ASN.1 的 PrintableString 默认 trim 了前导空格,而那版系统底层校验逻辑偏偏依赖这个空格做 hash key 分片……我说不准是不是所有产线机都这么干,但手头三台 demo 机全挂在这儿。 桌上的机械键盘声特别响,青轴,敲 delete 键时“咔哒”一声拖着余震,我删了七次同一行 gradle 配置,第八次才想起来得去改 vendor-keystore 的 subject 字符串生成脚本。楼下便利店的关东煮在窗边冒热气,老板娘把竹签往塑料盒里一插,转身去调收银机音量,叮咚——“欢迎光临”,那声音穿过玻璃钻进来,跟 logcat 里刷出的 “Signature verification failed at stage 3” 搭在一起,特别滑稽。
产品概念图,仅供参考 测试妹子把三台真我13堆在窗台晒着,说“晒一晒好清灰”,结果两小时后外壳烫手,指纹识别模块集体变迟钝,按三次才亮一次。我拿温枪测过,47℃,离热关机阈值还差三度,可 sensor HAL 已经悄悄降频了——这个我敢打包票,因为 log 里有句 debug-level 的“throttle triggered by thermal_bypass”, 但 sysfs 下 thermal_zone2 的 trip_point_0_temp 显示是 70℃,对不上。查代码发现那行日志是三年前一个外包同事写的,硬编码了 45℃ 检查,根本没走 thermal framework……你猜他留的注释是什么?“防误触,先打补丁”。 编译卡在 dexmerger,等了十八秒。窗外洒水车经过,水柱砸在对面写字楼玻璃幕墙上,“哗”一下溅开,像一大滴蓝绿色的墨水甩到屏幕右下角。我盯着 build 输出,突然想起上午对接人老张蹲在工位旁边,手指一直在抠手机壳边缝里的灰,反复抠,没说话,最后只说:“文案定稿了,就是那句。” 我当时点头,心想反正只是 launcher 上一个 banner 图的文字。结果下午 QA 报出来:横屏游戏切后台再回来,systemui 进程被杀,status bar 崩掉,但 banner 图文字还在,浮在黑屏上,字体描边发虚——因为 SurfaceFlinger 挂了,SurfaceControl 走 fallback path 渲染了 ViewRootImpl 的 snapshot cache,而那个 cache 居然把文案渲染进去了,连 shadowLayer 都没丢。我说不准是 HWUI 还是 Skia 做的缓存,只知道它不该存文本层,更不该在 systemui crash 后还活着。 “真我13震撼登场!越级性能+电竞屏,硬核玩家首选”。这话印在 OPPO 体系里三十七份物料里,PPT、官网 banner、线下店灯箱、应用商店详情页第一屏、推送弹窗、锁屏通知模板、even 系统设置里的“新机体验引导页”……全部同步改了。我改完 settings apk 里的 strings.xml,顺手 grep 了一下 res/,发现 assets/fonts/ 目录下还埋着个 realme13_slogan.ttf,名字起得挺唬人,打开一看是套 Noto Sans CJK 的 subset,字重错了两档,数字 3 的竖钩少了 0.5px 曲率——这不是重点,重点是这玩意儿根本没被任何 layout 引用,连 FontLoader 的 fallback chain 里都没塞进去,纯属去年 UI 团队临时加的需求,忘删。但它就在那儿,在 apk 包里占着 372KB。 我数过,真我13 上这句文案共触发 9 种不同的渲染路径:Launcher 的 TextView、Notification 的 RemoteViews、SystemUI 的 StatusBarIconView、Settings 的 PreferenceCategory title、GameSpace 的浮窗标题栏、AOD 的自定义文案控件、蓝牙配对弹窗的 Dialog.setTitle()、相机取景框顶部 Overlay、甚至 OTA 更新完成后的 Toast——每个路径字体 size 不一样,抗锯齿开关不一样,shadowOffset 值被不同 layer 修改过,有一处居然用 Matrix.postScale(1.002f, 1.002f) 来强行撑宽“越级”俩字的字间距,就为了适配某款窄字体的 baseline 偏移……没人管一致性,只要不崩就行。优胜劣汰?对。活下来的都是没崩的,死的全进 buglist backlog 里躺着,等哪天产品经理说“这功能不重要了”,就一整块删掉。 昨天半夜两点,外包同事阿杰突然微信语音炸进来,背景全是键盘敲击声和咖啡机蒸汽嘶鸣,他语速快得喘不上气:“兄弟你快看 /vendor/etc/perf_profile.xml 里那个 gpu_boost_timeout_ms,默认填的是 3000,但我刚翻到真我13 的 BSP patch,底下 patch 号 00124c3e 里改成 100 了!但文档没更新!” 我没回,挂了,因为我知道他其实想问要不要改我们的 powerhal overlay。我没动。现在那台窗台上的 demo 机还亮着 banner,外壳微微发烫,风扇转速是 0,温度传感器读数稳定在 46.7℃,而它的 perf_profile.xml 还锁在 3000 毫秒——这台机子没进量产,进不了 QA 大名单,所以没人会测它跑满帧率时 GPU 是否降频。它只是静静挂着,当个展示品。 我现在打开 Android Studio,准备把那段签名校验绕过逻辑写成 patch。不是修复,是 patch——加 try-catch + fallback signature,不报错,只打一条 warning log,内容我自己填:“realme13_cert_whitespace_compromise_v1”。然后 push 到私有 repo,备注写“临时过签,等厂商澄清”。至于那个字体文件,我打算明天下午三点趁 build server 负载低的时候,用 adb shell 删除设备上的 /system/fonts/realme13_slogan.ttf,删完立刻 reboot ——反正没人监控 font list diff,也从来没人验证重启后 banner 还能不能正常显示。这步我不敢写成自动化脚本,怕被 audit 日志扫到。 对了,刚才测试妹子路过,把窗台上那三台真我13往里推了五厘米,避开了正午直射,说“再晒下去 fingerprint IC 得裂了”。我抬头看她工牌,上面贴着一张便利贴,写着“Q4 末要交鸿蒙兼容性报告”。她冲我笑了笑,没提 banner 也没提签名,转身去泡面了。泡面桶是便利店买的,红烧牛肉味,汤底浮着一层油花,在电脑屏幕反光里晃来晃去。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

