OPPO Find X9深度评测:性能与影像双飞跃
|
亲历现场。那晚OPPO对接人老张在微信里发了个“X9整机预装包V2.3_紧急”,附件名带红叹号,我点开解压,发现build.gradle里compileSdkVersion写的是三十四——那版系统根本没这玩意儿,我原以为是笔误,结果打开源码树,看到vendor/oppo/overlay/frameworks/base/core/res/res/values/config.xml里硬塞了两行新的feature开关,其中一行标着“find_x9_optimize_v2”,但实际代码里根本没引用这个stringID。
产品概念图,仅供参考 桌上机械键盘声咔哒咔哒响,左手边第三台测试机屏幕还亮着,停留在bootanimation最后一帧卡死的状态。楼下便利店关东煮的蒸汽从通风口飘上来,混着隔夜咖啡味,我闻了三回才意识到是那个味道——不是咖啡,是煮萝卜的甜腥气。编译等了十八秒,窗口右下角弹出“aapt2 link failed: duplicate resource”,查了四遍R.java,最后发现是厂商自己写的OppoFeatureProvider类,在onCreate里new了两次ContentObserver,注册进同一个Uri,监听同一组settings.global值,第一次没unregister,第二次就抛空指针,但崩溃堆栈被Logcat过滤掉了——因为他们在system.prop里加了log.tag.OppoFeatureProvider=DEBUG,可偏偏没开persist.log.tag.OppoFeatureProvider,所以只在adb logcat -v threadtime里能看到第一行线程ID,后面全截断。 测试妹子小林抱着六台Find X9站在窗台前调光感,说“白平衡跑偏不是算法问题,是sensor driver里temp_compensation系数表少填了一行”,我凑过去看她平板上截图,确实——第十七个温度档位对应的数据是0xFF, 0xFF, 0xFF,全亮红。可这跟我要改的SystemUI通知栏折叠逻辑有半毛钱关系?没有。但她手抖把一杯美式泼在充电盒上,盒子冒烟那会儿,我正手动patch掉SettingsProvider里的一个try-catch块,为的是让crash露出来,而不是被吃掉。 而更荒唐的是,厂商文档写“X9深度评测:性能与影像双飞跃”,他们拿这套话术当验收标准。我敢打包票:那个“优胜劣汰”不是他们想出来的——是测试组上周五下午三点零七分,在钉钉群聊里被逼急了,有人打字“反正就是优胜劣汰呗”,然后PM直接复制粘贴进了PRD附件的封面页。我没截图,但记得清清楚楚,她发完后撤回了,撤回理由写的是“错别字”,其实不是错别字。 窗台那堆测试机晒到发烫,最上面那台侧边框都翘起来了,壳子微微变形,但指纹识别照样过,这点我试了七次。不过指纹过不代表touchpanel上报坐标正确,有台机子Y轴偏移二十三像素,只在冷启动后头三次触控出现,第四次又正常——我录了视频,发给外包同事阿哲,他回我说“先不修,等Oppo测完Beta再看”。结果Beta三天后就推了,我们连补丁都没签上签名。 这个我说不准:到底是因为那版系统的SurfaceFlinger对HDR10+元数据解析路径改了,还是因为Oppo在hal层插了一个叫OppoDisplayTuner的service,它偷偷篡改了ColorTransform矩阵?我看了一上午trace,最后在dumpsys SurfaceFlinger里翻到一句log:“OppoDisplayTuner: applied override for display 0 — LUT not loaded”,但没写LUT该加载哪个文件,也没写为什么没加载。查了vendor/etc目录,根本没这个LUT配置文件。可能压根就没做。 我盯着build输出窗口右上角的时间跳动,三分钟十七秒,编译停在“transformClassesAndResourcesWithProguardForOppoRelease”,可我们没开ProGuard,只开了R8,而且gradle脚本里明写着minifyEnabled false——但它就是卡那儿,不动。这时候洒水车来了,从楼下慢慢驶过,水柱扫过玻璃,哗啦一声,像把整个Android生命周期都重置了一遍。我顺手点了clean project,结果clean完再build,它居然过了。 但过了没用。OTA包签名之后,push到X9上,SystemUI一拉下状态栏,就卡顿一秒半。不是ANR,是RenderThread里bindFbo的时候多等了一次sync_fence_wait,fence timeout设的是五百毫秒,但设备实际花了六百二十毫秒——可这数字在哪改?不在我们的代码里,在/vendor/lib64/hw/vulkan.msm8998.so里,Oppo把它替换成自家的libvkqcom.so,版本号都不标,只留了个编译时间戳:2024年五月十七日十九点四十三分。我不知道他们有没有把原始AOSP Vulkan Layer的缓存策略关掉,但我知道,如果现在换回去用AOSP的那个so,X9拍月亮会糊掉——因为月面纹理采样时缺了他们的自定义clamp模式。 算了。我现在去翻Oppo那边昨天晚上十一点半发来的“X9稳定性白名单更新表”,里面列了二百零三行Activity和Service的enable/disable标记,但没说明哪几行是为了规避某个kernel panic路径而加的。表格最底下有一行手写备注:“勿动#207,否则锁屏闪退(仅X9)”,字迹潦草,像用触控笔划的,没署名。我不认识这个笔迹,也不打算问。 我准备今晚把config_override.xml里那两行find_x9_optimize_v2的开关注释掉,再编一次。不为别的,就想看看它到底会不会影响那台窗台上翘边的X9的闹钟震动节奏——小林说她今早被震醒时,“第二下比第一下慢了三百七十二毫秒”。我不信,但明天得去借她的表测一下。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

