iPhone 16e深度体验:小机身,大性能,果粉必入!
|
亲历现场。那版系统推到产线前四十八小时,我盯着三台测试机的 Logcat 窗口发呆,其中一台在反复报 `SurfaceFlinger: skip layer update for com.apple.launcher`——你猜苹果自家 launcher 跑在安卓壳子里?我笑出声,旁边测试妹子抬头看了我一眼,低头继续用指甲刮掉屏幕边角的一点胶痕。
产品概念图,仅供参考 桌上机械键盘敲了十七下,全是 backspace。我原以为是 Launcher 进程没杀干净,结果连 adb shell am kill com.apple.launcher 都没用,它自己又起来了,图标还在桌面右上角第三格。后来查到是预装包用了 bindService+START_STICKY+守护进程三件套,还带个 `android.permission.INTERACT_ACROSS_USERS_FULL`,厂商对接人说“这个我们改不了,苹果给的包”。我盯着那行 log 又刷了三遍,窗外洒水车经过,水柱砸在水泥地上噼啪响,像在嘲笑我们还在搞 service 生命周期。楼下便利店关东煮的萝卜味飘上来,汤底咸得发齁。测试妹子端着纸杯上来,把一张打印纸拍在我显示器边缘:“16e 的 Launcher 在小米 14U 上点三次 icon 必然 ANR,但红米 Note 13 Pro+ 没事。” 我接过来扫了一眼,她没写复现步骤,只画了个歪斜的箭头指向日志里一行 `InputManager: dispatching timeout: 5000ms`。我敢打包票这跟 InputDispatcher 的 binder thread 优先级被降了两级有关,但具体哪一行代码调了 `setThreadPriority`?我说不准。 三台测试机堆在窗台,中午晒得发烫。最右边那台屏保是张 iPhone 宣传图,小机身大性能,果粉必入——底下还贴了张便利贴:「客户要求必须保留此页面」。我伸手摸了下背壳温度,42 度,比我的手心还烫。而左边那台刚跑完 CTS,report.xml 里 `android.app.cts.ActivityManagerTest#testStartActivityWithNullIntent` 挂了,失败原因居然是「Intent is null, but activity exists in manifest」,可 manifest 里明明写了 `android:exported="true"`……等等,那个 `android:exported` 是不是漏加了引号?我重新 build 了一下,APK 包里 `` ——对,没引号,就一个裸 true。Android 12 以后这玩意直接 parse 失败,但有些 OEM 的 PackageManager 居然兼容了,有些不兼容。我原以为是 SELinux 策略冲突,结果是个语法错误。这个我敢打包票。 外包同事老周蹲在椅子上啃冷包子,嘴里含混着说“OPPO 那边反馈 16e 图标拖拽时 shadow 模糊值算错,他们改了 `ViewOutlineProvider` 的 `getOutline()`,但咱们的 `ViewGroup.setChildrenDrawingOrderEnabled(true)` 一开就盖不住”。我没接话,他接着说“不过三星说他们不管这个,说是‘iOS 交互规范’”。我嗯了一声,转头去删 gradle.properties 里那行 `org.gradle.jvmargs=-Xmx4g`,换成了 `-Xmx8g`,因为编译等待时发现内存溢出日志在 console 最底下跳了一下,就半秒,像鱼尾巴甩过去,没人看见,但我知道它存在。 优胜劣汰?对。不是市场选,是机型选。Mate60Pro 自动降频锁帧率,16e 的 launcher 就能跑满 VSync;Pixel 9a 走 AIDL 接口卡三帧,16e 的 IPC 却绕开了 HwBinder 直接塞进 ashmem——但你要是去看 `/dev/ion`,会发现那块内存压根没释放,七十二小时后 kernel oops,设备黑屏重启,log 里只有一行 `ion_heap_buffer_destroy: buffer not found`。没人修。客户说:“能过 CTS 和 GMS 就上线。” 我记得去年 11 月,在杭州厂子改 OTA 包,有个同事为修一个 vendor.img 分区对齐问题,改了十九次 mkbootimg 脚本,最后发现是 UEFI 启动器读取 ext4 的 inode cache 机制变了——这种事没法写进 PRD,也没法测进 Case,但你只要碰上一次,手抖三天。 测试妹子突然喊我:“你快来看,华为 Nova12 竟然能把 16e 的 AppOps 列表里的位置权限默认关成 denied——但其他厂商都是 allowed。” 我走过去瞄了一眼,她手指按在屏幕上划了两下,屏幕反光里映出我头发乱得像被静电打过。我顺手扯了扯衬衫领子,领口纽扣绷得发白。没接话。这事和 Launcher 性能无关,和“小机身大性能”无关,甚至和“果粉必入”无关。但它存在,就像窗台上那台晒发烫的机器,没人擦汗,也没人拔电源。 我点了支烟,火机咔哒响了两声才打着。烟雾飘过去的时候,我忽然想起上周五晚上,红米测试组群聊弹出来一条:「16e 的后台刷新逻辑和咱们 MIUI15.0.40 的 job scheduler 冲突,kill 进程后它用 `AlarmManager.setExactAndAllowWhileIdle()` 拉起自己,但唤醒后立刻 `finishAffinity()` 再重建栈——整个过程不到三百七十二毫秒」。群里没人回,只有一条系统提示:「XXX 正在输入…」,然后没了。现在我也不打算回。这活明天上午十点前得封包,我先去把 window flag 那几行注释掉再看看。 (编辑:52刷机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

