荣耀Magic8 RSR惊艳亮相:未来美学,旗舰新高度
|
亲历现场。那天下午三点十七分,我盯着编译窗口卡在 dexmerger 的第十八秒,窗外洒水车刚好开过,水柱扫过玻璃,哗一下,又拖着滋滋声拐弯走了。我原以为是 Gradle 插件冲突,结果点开 build/intermediates/merged_java_res/debug 下那个空文件夹——里头连个 .jar 都没有,就一张被热气熏歪的贴纸,写着“RSR 特供资源”,贴在文件夹边角上翘着。这个我敢打包票。 荣耀Magic8 RSR惊艳亮相:未来美学,旗舰新高度。这行字我贴在测试机壳背面贴了三天,用的是那版系统出厂预装的 WallpaperPicker2.apk 里的文案模板——他们没改 layout_id,直接把字符串丢进 strings.xml 第七行,还带个没删干净的 comment:“// TODO: sync with marketing”。测试妹子昨天蹲窗台拍 logcat,顺手把三台真机堆在铝合金窗沿上,下午两点四十一分,最左边那台背壳摸起来发烫,像刚煮熟的关东煮盒盖,我伸手碰了下,缩回来时撞翻了桌角的机械键盘,青轴咔哒一声脆响,震得旁边那台还在跑 Monkey 的机器屏幕闪了一下。 优胜劣汰?不是说芯片调度多聪明——是它真敢把 SystemUI 的 status_bar_height 覆盖成 0dp,然后靠 ActivityManager 来硬拦住所有 startActivityIfNeeded 的回调,在启动第三屏时扔出一个 no-op 的 WindowLayout 的 fake token。我数过,那版系统里有六处地方调用了 getStatusBarHeight(),其中四处在 SettingsProvider 初始化时就被 static final int 截断了,剩下两个在 StatusBarManagerService.java 里用 if (Build.MODEL.contains("RSR")) { return 0; } 硬顶着。这个我说不准是不是故意留的后门,但我知道,他们没动 /system/etc/sysconfig/ 下那个 disable_statusbar_overrides.xml,光靠改 overlay 层的 density 进度条就能让 SystemUIDecorView 在横屏时少 draw 十七帧——我亲眼数的,用 perfetto 跟了三遍。 楼下便利店的关东煮今天换了萝卜,炖得太烂,汤面浮着一层油膜,反光正好照在测试机屏幕上,映出一串模糊的 pid=5632 的 ANR trace。我当时正对着 Logcat 刷 “W ActivityTaskManager: Activity pause timeout for ActivityRecord{……}”,手指悬在键盘上方,没按下去。外包老张在隔壁工位吼了一嗓子:“你那台 Magic8 RSR 的 WebView 初始化失败是不是因为 preload.js 里写了 let a = globalThis?.location?.href”,我没理他,因为那行代码压根没进 assets/webview/,而是塞进了 /system/app/WebViewGoogle/res/raw/,用了一个叫 webview_preload_rsr.json 的名字,但 JSON 格式根本不对,少了个逗号——可它居然能 parse 成功,因为系统里那个 JsonReader 是被阉割过的,跳过了 strict mode 校验。我查了,源码注释写着“// RSRT-412: relax json parser for legacy payload”,连 Jira 号都懒得改年份。 测试妹子小林今早八点四十拿过来一台烧录失败的样机,USB 连接识别不到 adb,但充电正常。她把 USB-C 线换了三根,最后蹲在工位底下翻出一根去年用过的绿皮线,插进去瞬间,设备列表刷出一串 device,紧接着是三个 offline。我让她再插拔两次,第三次亮起 fastboot 时,屏幕左下角闪出一行十六进制地址:7c0f2a9d ——这不是 SOC ID,是 SecureBoot 的 signature hash 后缀,那版系统里只在 bootloader_log.txt 里见过一次,且仅出现在 RSR 专用的 bootimg 中。我原以为是 key 烧录异常,结果拆开 log,发现 /dev/block/by-name/boot_a 下的 image header 里 vendor_os_version 字段写着“1.3.7.rsr”,而 vendor_os_patch_level 是空的。这个字段本该填年月,但他们留空了。不填不是 bug,是设计。我就没见过哪家敢在 vendor 分区干这事。
产品概念图,仅供参考 机械键盘又响了两声,是同事敲 backspace 敲太急,连按三下,声音短促、断续、带着塑料敲击的毛边。我忽然想起上周五凌晨一点,厂商对接人王工在钉钉发来一段语音,背景有地铁报站声,他说“你们先别动 SystemServer 的 onBootPhase PHASE_ACTIVITY_MANAGER_READY 这块逻辑”,然后语音中断了七秒,再响起时他喘着气:“——我们改了个 init.rc,加了 service sysui_optimize,你们别碰它”。我没回,因为那台测试机当时正卡在 bootanimation 结束前两帧,log 里反复打 “D DisplayManagerService: updateDisplayState displayId=0 state=ON -> ON”,状态死循环。后来我们绕过去,用 adb shell setprop persist.sysui.disable_optimize 1 强制关掉,画面才动。可那句 prop 其实不存在于任何 propdb,是 init 动态生成的伪属性,值为 1 时会触发一个空 Service 的 stop_self() ——没人知道为什么 stop_self 能让 SystemUI 解锁,但真能。 对了,刚才洒水车第二次经过时,我抬头看了眼,司机摇下车窗,朝我点了下头,像认识我似的。其实不认识。我也没跟他打招呼。反正现在我已经把那行文案从三台机器壳上全撕了,胶痕留在那儿,擦不干净。下一轮适配,我打算先把 /system/app/SystemUI/oat/arm64/SystemUI.odex 拷出来,看它重定位表里有没有那段跳转到 0x7c0f2a9d 的指令。要是没有……那就先重刷一遍 RSR 专用 recovery.img 再说。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

