三星Z Flip7 FE深度解析:一文看懂,轻松选购!
|
亲历现场。那晚九点四十七,编译卡在 dexmerge,我盯着屏幕右下角那个转圈小箭头,像看殡仪馆计时器。窗外洒水车经过,滋啦——滋啦——压过沥青缝的节奏,跟BuildConfig里那个没删干净的DEBUG=TRUE一样烦人。测试妹子蹲窗台数Z Flip7 FE铰链开合次数,数到三百七十二次,手机自动休眠,她拍了下后盖,没反应,就掏出充电宝先给机子续命——这操作我敢打包票,比咱们改vendor overlay快。 我说“优胜劣汰”,不是夸它多能打,是真见血。那天早上厂商对接人甩过来个需求文档,PDF第十七页写着:“折叠屏竖向主屏必须兼容旧版Launcher图标缩放逻辑,且不触发onConfigurationChanged两次”。我原以为又是照着S23 FE抄个dp适配值完事,结果实测发现——不是API调用顺序错了,是系统自己把onConfigurationChanged扔进Handler queue后,又塞了三次PendingIntent回调进去。第三次回调里ViewRootImpl.mAttachInfo根本为空,但mWindowAttributes.flags居然还挂着FLAG_LAYOUT_NO_LIMITS。这个我说不准,连dumpsys activity top都看不出是谁加的flag,只看见SurfaceFlinger那边帧率跳了一下,像被人掐了脖子又松开。
产品概念图,仅供参考 桌上机械键盘声一直没停,青轴,咔嗒咔嗒,每敲一个字母,编译进度条往回倒退零点三秒。外包同事老张叼着棒棒糖趴在隔壁工位,舔掉糖纸最后一丝甜味,忽然问:“你见过Galaxy Z Flip7 FE的DisplayMetrics.densityDpi在横屏状态被硬编码成320吗?”我没答,他笑出声,糖棍儿折断,“上个月联调,他们QA妹子说‘我们没改dpi’,我把bootimg unpack出来,vendor_dlkm里有个module叫display_config.ko,里面有个g_density_override变量,初始化值就是320——还是十六进制写的0x140。我截图发过去,对方回复:‘此参数由硬件层管理,建议贵司按320开发’。” 楼下便利店关东煮的热气糊在玻璃上,形成一片毛玻璃状雾区。我伸手擦了下,指尖蹭到一点油渍,顺手抹在裤子上。Z Flip7 FE测试机堆在窗台,下午三点开始晒,六点半拿进来,金属中框烫得握不住,指纹识别模块报错E_BAD_TEMPERATURE,logcat里飘着一行:thermal mitigation triggered: screen_on_rate_limit_exceeded。可它明明刚亮屏十五秒。这玩意儿的温控策略根本不走thermal-engine,自己另起daemon进程,pid 1892,名叫folding_therm_guard,源码里注释写着// legacy impl for FE variant only,后面还跟了个emoji。 所以我说优胜劣汰,是淘汰掉那种以为改改AndroidManifest就行的甲方幻想。你改res/values-sw600dp-v29,它系统层直接忽略,反手从/sys/class/graphics/fb0/videomode读取一个写死的1200x2640;你修了SurfaceView黑边,它第二天OTA推个vendor patch,把setZOrderOnTop(boolean)的native实现里加了一行if (isFolded()) return;;你拉通高通FAE问清楚,FAE说“你们该问三星”,你再找三星技术支持,人家说“已转交ODM”——而ODM电话永远占线。对,就这么干耗着。就像上周五下午,我们仨——我、老张、测试妹子——围在工位看Z Flip7 FE跑Monkey,跑着跑着屏幕一半灰一半亮,system_server没崩,SurfaceFlinger没杀,连ANR都没,就是LayerStack里少了一个layer handle,查log只有两句:W DisplayDevice: Invalid layer handle,和一句更绝的:I VrManagerService: VR mode off(可这机子压根不支持VR)。没人知道VR mode关不关跟折叠屏渲染有啥关系,但它就是关了,关得明明白白,关得理直气壮。 刚才泡了杯速溶咖啡,杯子烫手,我就搁在Z Flip7 FE背面降温,结果它自动唤醒,弹出“检测到异物接触,请清洁传感器区域”,底下小字:“建议使用柔软无绒布擦拭”。我拿T恤下摆擦了两下,弹窗没了,但前置摄像头启动延迟变长——实测平均多等四百一十二毫秒。这个我敢打包票,用Systrace录了十七次,每次DelayInputConsumer线程都卡在SensorService::invokeCallback()之后,之前一切正常,之后直接跳到onCameraStarted。中间那段call stack空白,像被刀切掉了一块。 说到这儿我想起前天中午,厂商对接人微信发来一张截图,是他手机相册里一张Z Flip7 FE的渲染对比图,左半边标着“v1.2.3”,右半边标着“v1.2.4”,底下备注:“请重点观察状态栏高度变化”。我放大看了半小时,高度真差了一像素。我截图回他:“哪个状态栏?通知栏?系统UI的status_bar?还是Launcher里的StatusBarView?”他回:“就是顶上那个带信号格的。”我再问:“用了什么字体?系统默认?还是你开了第三方字体?”他没回。我盯着他头像右下角的小绿点,亮了八分钟,灭了。我也没再戳。 现在凌晨一点零三分,编译终于过了。我把APK拖进Z Flip7 FE,安装,打开,首页图标加载完成,右上角时间显示准确。我松口气,拿起桌上冷掉的关东煮竹签,掰成两截,准备明天早上去B1测试间重跑AccessibilityService注入流程——他们昨天才确认,Z Flip7 FE的无障碍服务权限检查逻辑,是在frameworks/base/services/core/java/com/android/server/accessibility/AccessibilityManagerService.java的第两千零三十四行,用反射调了private方法checkPackageSignatureLocked,而这个方法……在那版系统里,已经被重写成直接return true了。我也不知道为啥,反正return true了。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

