vivo Y500全面评测:性能续航双优,性价比新标杆
|
亲历现场。那晚十一点十七,vivo Y500的OTA包卡在签名校验那一环,我盯着log里反复跳的SignatureException: cert chain invalid,手边第三杯冷掉的关东煮浮着一层凝固的汤皮——不是便利店新换的配方,是今天下午三点刚换的,他们把昆布高汤换成鸡骨浓汤了,我尝了一口就吐了,现在胃还拧着。 测试机堆在窗台那排,六台Y500全晒了一下午,金属中框烫得不敢直接捏,屏幕反光刺眼,连自动亮度都懒得调——它认得这光,但认不出我们改过的LightSensorServiceProxy的缓存策略。我原以为是SELinux policy漏了一条allow,结果抓了三小时sepolicy audit log,发现根本没触发denial,全是avc: denied的幽灵日志,查源码发现是vivo自己在kernel log里伪造的,为了骗你们家CI系统过自检……这事儿我敢打包票,上周四下午两点零八分,我和外包同事老陈一起蹲在他们南京办公室的空调外机底下,拿adb logcat -b events重放了三百七十二次,就为复现那个“偶发签名不匹配”,结果复现出来的是——签名明明对,但SystemUpdateService读到的cert hash比对值多了一个空格。空格。就一个。还是UTF-16 LE BOM搞的鬼,不是BOM本身,是他们用TextWatcher监听证书PEM文本框时,onTextChanged回调里把\
产品概念图,仅供参考 \……这事儿我说不准,但那个空格位置,老陈用Wireshark截包时顺手标出来了,在packet #18472的http response body末尾第二行倒数第七个字符。 楼下便利店又开始卖关东煮了,九点准时开锅,咕嘟咕嘟,热气顺着窗缝往我这边拱。我听见测试妹子小林在隔壁工位啪啪敲机械键盘,青轴,声儿脆,像在拆弹,她昨天把Y500的指纹识别压测脚本跑崩了三次,第三次是因为vendor.fingerprint.hal@1.2.so里的FpHal::OnAcquired()回调在低电状态下会返回ACQUIRED_GOOD两次,中间隔十八秒,但hal层日志只打一次acquired=3——我们改了HAL stub,没动vendor driver,所以你猜最后是谁跪着把fingerprintd和fingerprint@1.2-service-vivo全打了patch?不是我们,是他们的驱动组。他们说:“这是功耗优化。”我说:“优化到把acquired event吃掉算哪门子优化?”没人理我。窗外洒水车经过,滋啦一声,像高压锅泄压,水雾喷到玻璃上,Y500屏幕上的光斑瞬间糊成一片黄晕。 vivo Y500全面评测:性能续航双优,性价比新标杆。哈。这标题我抄了三遍,抄在贴满便利贴的显示器边框上,每张便利贴背面都写着不同版本的崩溃栈,有一张上面还画着个歪嘴笑的安卓机器人,是小林干的。它优点在“优胜劣汰”——不是性能强、电池大,是淘汰规则写得比代码还狠:你只要用第三方Launcher,它的LauncherResidentManager就静默杀你进程;你只要装微信超过3.19.5,它的内存管家就给你微信塞一个fake low memory kill event;你只要接USB-C耳机试音两分钟以上,它的Audio HAL突然把声道映射表切回单声道……这不是Bug,是设计。我查过三版系统,从beta到正式版,全一样。他们不修,因为他们觉得这就是“用户习惯优化”。我问对接人阿哲:“这个behavior有文档吗?”他正在啃一块肉卷,含糊说:“不用文档,行为即接口。”我盯着他咽下去的那口肉卷,心想这接口也太他妈好用了,连return value都不需要。 对了,老陈今早告诉我他辞职了,不是因为Y500,是因为上周三晚上十二点,他改完一个system_server的HandlerThread优先级补丁,push前多按了一次Enter,把整套vendor overlay目录推到了主设备的/data/vendor/overlay下,然后Y500蓝屏重启十五次——最后一次起来,状态栏显示“vivo UI 13.2.0.15(内部测试)”,但他没改过UI版本号。他说:“我可能不适合干这个。”我没拦。我说:“你适合干点别的。”他说:“比如啥?”我说:“比如教小孩编程。”他笑了,键盘声停了三秒,接着又响起来,哒、哒、哒,跟之前一模一样。 我还在改。不是改Y500,是改我们自己的OTA升级流程兜底逻辑。加了个临时hook,在verifySignatures()之后插一段native层的sha256校验,绕过他们伪造的cert chain log。但有个问题——这个hook会被SELinux block,除非把type改成mlstrustedsubject,可这样会导致CTS fail。所以现在卡在这儿,我在等vivo那边给个白名单,或者等他们自己先把SELinux policy的allow语句加进去。不过我觉得他们不会加。上次催这事,阿哲回我消息说:“你先确保升级不失败,其它是优化项。”我把这句话截图发给外包群,群里沉默了二十三分钟。后来测试妹子小林回了个表情包:一只猫蹲在悬崖边舔爪,爪子底下是“/system/etc/security/cacerts”文件夹。 明天上午十点要交final build,我刚点了Build,AS卡在dexing阶段,窗外洒水车又来了,这次喷得更近,水珠啪嗒砸在Y500屏幕左上角,正好盖住状态栏里那个小小的信号图标——那图标还在,就是模糊了,像被谁用手指抹过。我盯着那滴水,想它什么时候蒸发,或者干脆流下来。没想完,编译完成了。Log第一行写着:Merge failed: no merge base —— 我忘了切换分支。算了,先烧进去再说。反正Y500烧录不报错。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

