vivo Y500i深度评测:导购力荐的性价比神机
|
亲历现场。那天凌晨三点十七分,我蹲在vivo深圳南山科技园B座三楼西侧最里那间外包工位上,盯着四台Y500i同时跑冷启动耗时——三台亮着,一台黑屏但adb logcat还在吐字,这台是刚刷完包的,没进recovery就自己熄了。窗外洒水车正经过,喷头转得不匀,哗啦一下,停两秒,再哗啦,像卡顿的系统动画。
产品概念图,仅供参考 我原以为是kernel log被截断了,调adb shell dmesg看了十八秒,全是空行。结果翻到vendor目录下那个叫vivo_display_thermal_control的so,发现它init阶段硬编码读了一个不存在的节点/sys/devices/virtual/thermal/cooling_device16/state——根本没这个设备。我敢打包票,这玩意儿在X70 Pro上压根没加载过,全靠vendor bin自己fallback;但Y500i的dtsi里把cooling_device16删了,fallback逻辑又漏掉了。所以开机后surfaceflinger等了三百七十二毫秒没等到callback,直接把sf的主loop线程给挂起了——你猜怎么着?SurfaceFlinger进程还在,ps -A能看到,就是不动。不报ANR,不打WTF,log里连warning都没有,只有一句“[SF] Waiting for thermal policy”印在第三行,后面跟着一整页空白。 桌上的机械键盘声特别响,青轴,敲delete键跟打枪似的。我删掉第十七次重编译的out/target/product/y500i/obj/SHARED_LIBRARIES/libvivo_display_interceptor_intermediates/ 中间文件,手抖把build/make/core/main.mk里一行$(shell echo $(VIVO_ENABLE_THERMAL_POLICY))给echo错了,输出成$(shell echo $(VIVO_ENABLE_THERMAL_POLICY) ),最后多了一个空格。Makefile就默默吞了这行,啥都不干,也不报错。直到凌晨四点测试妹子把手机塞回我手里说“首页图标点击无响应”,我才意识到:我们编译出来的system.img,压根没打进去那块热策略拦截补丁。这空格害我多跑了三次全量编译。我敢打包票,vivo自己的CI脚本肯定有trim空格,但我们用的是他们两年前给的makefile模板,早过期了。 楼下便利店的关东煮汤锅咕嘟咕嘟响了一宿,老板凌晨五点换班,掀帘子带进一股冷气,还有股八角味。他探头看我屏幕:“哥,你这红米Note 9s咋还放这儿?”——那是我自己的备用机,借来测对比帧率的,被他顺手搁窗台上了。窗台晒到发烫,Y500i堆在那儿,五台叠在一起,最上面那台摄像头盖板已经有点软化变形,手指按下去有微弱凹陷。没人碰它,但它就在那儿变软。我拿红外测温枪扫过,表面六十三度,比隔壁小米Civi3高七度。这跟导购文案写的“智能温控”完全没关系,但它确实存在。我不确定这算不算功耗问题,但我知道,测温枪数字跳动的时候,我脑子也跳动——跳得不规律。 厂商对接人老周今早九点发微信:“杨工,客户问‘优胜劣汰’是哪几项数据,能不能列个表。”我回了个“好”,就没下文了。其实我知道他要什么:CPU降频触发阈值、后台保活数上限、动画丢帧率容忍边界。但“优胜劣汰”这个词不是我们加的,是他们市场部PPT里蹦出来的——上个月我亲眼看见他们市场总监在会议室白板上写:“Y500i不讲参数,讲生存法则”。后来法务改成了“优胜劣汰”,说更温和。我原以为只是宣传话术,结果上周看他们内部系统日志解析脚本,真有段Python叫select_survival_candidates.py,路径是/system/vendor/bin/scripts/,它根据内存压力+IO wait+surfaceflinger帧间隔三变量打分,低于阈值的应用直接kill -9,不走AMS清理流程,连broadcast都拦不住。这个我说不准是不是所有vivo机型都这么干,但我敢说Y500i上它没做any-user权限检查,第三方launcher只要改个UID就能把它禁掉。这事儿我上周试过了,改uid后杀进程的log直接没了。 测试妹子小陈昨天下午拿台新刷机的Y500i来,说微信视频号点开闪退,“但只有竖屏切横屏那一瞬间”。我让她重演三遍,第二遍她手机滑落,砸在键盘上,Ctrl+Alt+F2组合键被误触,弹出console界面,我一眼扫见/var/log/bootlog里有一行“vivo_input_mapper: unknown vendor id 0x2a8b”,立刻让她换USB线——换了之后再没复现过。原来那根线屏蔽层坏了,干扰了touchscreen的I2C信号,导致input_mapper误判设备类型,进而让hal层返回非法event buffer大小,surfaceflinger拿到超长input packet后直接abort。这事跟“优胜劣汰”有个毛关系?没有。但它就发生了,在deadline前十七小时,在我们以为只剩UI适配的时候,突然从硬件层捅上来一刀。 现在我要去改那个thermal节点的兼容逻辑,但得先问问外包同事阿哲,他昨天说看到vivo那边内核组有人提过补丁vivo-kernel-v5.10-thermal-fix-2024-q2,我不知道是不是真的,也没在公开repo里搜到。反正我先把dtsi加回去,硬创一个cooling_device16,state值固定为0,先跑通再说。至于“优胜劣汰”到底算优点还是偷懒,等我把那五台窗台上的Y500i重新刷一遍,再看它们开机后谁先黑屏谁后亮,谁的surfaceflinger log先出第一帧。对了,洒水车今天没来。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

