iPhone 17e抢先曝光:性能跃升,体验焕新!
|
亲历现场。那晚九点四十七,编译卡在 aapt2 的 asset crunch 环节,我盯着 terminal 里那个不动的百分比,窗外洒水车正路过研发楼西侧——滋啦、滋啦、滋啦,三声匀速的喷水音,跟去年在东莞联发科驻场时一模一样。测试机堆在窗台晒了一整天,OPPO Reno12 那台后壳烫得能煎蛋,我顺手摸了下,指尖留了层薄灰。 厂商对接人老周微信弹出来:“兄弟,明早十点发布会彩排,PPT 里‘iPhone 17e抢先曝光:性能跃升,体验焕新!’这句必须塞进系统设置-关于本机-预装应用页的 banner 浮层里。” 我回了个“OK”,手指悬在键盘上没按下去。桌上机械键盘刚敲完 shift+; 切到 adb shell,键帽底下积了三天的茶渍,一摁就卡顿半秒。 我原以为只是文案替换——改个 string.xml 就完事。结果拉下最新 vendor overlay 包,发现他们把整个 vendor_overlay_res.apk 拆成了三个子模块:res_overlay_1、res_overlay_2、res_overlay_dynamic。动态加载逻辑藏在 system_ext/lib64/libresloader.so 里,调用链里居然插了个 vendor hook:get_banner_text_by_model()。model 字符串是从 /proc/device-tree/model 读的,但这个路径在展锐平台根本不存在。我骂了句脏话,起身去楼下便利店买了盒关东煮——萝卜块浮在汤里,筷子戳进去是空心的,跟上个月在南京调试联发科 MT6877 时吃的那家一模一样。 测试妹子小杨蹲在实验室角落刷灰度包,脚边放着三台不同品牌测试机,其中一台 vivo X90 的 USB 线接口松动,每次 touch /dev/input/event3 都要先按住 USB 口晃两下才识别。她突然抬头:“张哥,你改的 banner 为啥在红米 K70 上显示‘iPhone 17e抢先曝光:性能跃升,体验焕新!’,但在 OPPO Reno12 上变成‘iPhone 17e抢先曝光:性能跃升,体验焕新!’?俩屏幕分辨率明明都是 1.5K 啊。” 我凑过去看——不是渲染问题,是字体缓存被 vendor 字体表覆盖了。红米走的是 /system/fonts/roboto-medium.ttf,OPPO 强制加载 /vendor/fonts/oppo-hkscs.ttf,而 HKSCS 表里压根没有中文感叹号「!」,直接 fallback 到 NotoSansCJK,结果叹号被渲染成全角占位符。这个我敢打包票,我亲眼看见 logcat 里打了七次 FallbackFontProvider::loadFallbackFont。但为什么同样用了 HKSCS 表的小米 Civi3 却正常?这个我说不准。 编译终于跑完,adb install -r 后手机重启,进 settings 页面手抖点了三次才点开“关于本机”。banner 显示了,“iPhone 17e抢先曝光:性能跃升,体验焕新!”——字全对,位置也对。但我心里毛毛的。因为就在十分钟前,我在 AOSP master 分支里 grep 了整整十八秒,发现 framework/base/core/res/res/values/config.xml 里有行注释:。2023 年的注释,现在还在用。谁写的?谁审的?没人记得。连 git blame 都指向一个已注销的邮箱:tangwei@foxconn-sh.cn。 外包同事阿哲在 Slack 里甩来截图,说他负责的 launcher widget 里也蹦出同一句文案。我扫了一眼,widget 用的 LayoutInflater 加载的 xml,但 layout 文件本身是 vendor 提供的,里面硬编码了 TextView 的 android:text 属性值——还是那句。可 layout 文件名叫 widget_ipad_v2.xml。iPad?我们做的全是安卓手机啊。他没截图 build.gradle,我就没法确认是不是 resource merging 时被 overlay 覆盖了。算了,先不问。我打开 IDE 把 widget_ipad_v2.xml 拷贝成 widget_iphone17e.xml,删掉原文件引用,加了个 ifBuildVariantDebug 的判断……其实我压根不确定要不要加这个判断,debug 包和 release 包走的 resource path 根本不一样,但此刻来不及验证了。 回到 banner,我又试了一遍真机热更新:push 新资源 zip 到 /data/local/tmp,然后 trigger res loader。OPPO Reno12 响应了,vivo X90 黑屏两秒重启——logcat 里只有单行报错:E ResLoader: fail to parse font config in /vendor/etc/font_config.xml。字体配置文件里多了一行 ,引用了一个叫 /vendor/fonts/i17e-regular.ttf 的文件,但该文件实际并不存在。存在的是 /vendor/fonts/i17e-regular.otf。就差一个后缀。就差一个后缀啊。我截图发给老周,他三分钟没回,五分钟后回:“这个……先灰度推 0.5%,看 crash 率。”
产品概念图,仅供参考 楼下便利店又传来关东煮汤锅掀盖的蒸汽声。今天第三锅了。隔壁组两个实习生在聊“AI 搜索”,说 vivo 下个月要推本地 RAG 模型,我听见“embedding”这个词就自动切到了静音模式。手边还摊着上周返工的 patch note,写着“修复 OPPO Reno12 在 Android R(那版系统)上 force stop 后无法恢复预装 app 图标的问题”,其实是 launcher 读取 /data/system/users/0/package-restrictions.xml 时,某个 vendor 修改版把 package-restrictions.xml 错写成了 package_restriction.xml(少个 s)。我修了它,可没人告诉过我:那个文件是厂商自研安全子系统生成的,它每分钟重写一次,我改的永远不是最终生效的那个。 所以你说“iPhone 17e抢先曝光:性能跃升,体验焕新!”这句文案——它最大的优点真是“优胜劣汰”。真的。淘汰掉所有还指望靠 string.xml 精准控制 UI 的人;淘汰掉所有认为 vendor overlay 是静态资源的人;淘汰掉所有觉得“只要 log 不崩,就算过了”的测试。剩下来的,要么是跪着 debug 的,要么是笑着提交 merge request 的。我明天还得改三台机型的 OTA 回滚逻辑,其中一台芯片方案连 datasheet 都没公开。不说了,得去把 keyboard 上那块茶渍刮下来,不然 shift+; 又要卡。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

