问题 | Debuggable app在Android 14上运行卡顿

💡 原文中文,约4100字,阅读约需10分钟。
📝

内容提要

富途开发者反馈在Android 14上的app卡顿问题,经调查发现是解释器执行模式改变导致,谷歌已修复并计划在Android 15发布修复。

🔎

延伸解读

问题根源:解释器切换与JIT失效

Android 14在debuggable环境下将解释器从nterp切换为switch,导致性能下降。更关键的是,boot image和zygote加载的方法因JIT阈值被提高而难以触发JIT,这些方法在debuggable下被强制解释执行,无法通过JIT优化,从而造成严重卡顿。

修复方案与性能恢复

谷歌通过恢复boot method在debuggable环境下的JIT策略来修复问题,并提供了额外优化。测试显示,修复后启动时间从3.26降至1.02(快手App),从2.70降至1.24(富途App),基本恢复到Android 13水平。

国内用户需等待厂商合入

修复仅默认包含在Android 15中。海外Android 14设备可通过com.android.artapex模块更新获得修复,但国内因网络问题无法接收谷歌推送,需要手机厂家主动合入相关改动。开发者可关注厂商更新或向厂商反馈。

沟通不畅导致问题拖延

该问题影响广泛,但谷歌修复后未有效传达,开发者反馈也未能及时得到回应,导致国内Android 14设备上问题长期存在。这反映了生态中沟通渠道的重要性,开发者与厂商、谷歌之间的信息同步仍需加强。

❓

Q&A

Android 14上app卡顿的原因是什么?

原因是debuggable环境下的解释器执行模式由nterp切换为switch,导致性能下降。

谷歌如何解决Android 14的卡顿问题?

谷歌计划在Android 15中恢复boot method的JIT策略,以修复性能问题。

Android 14的卡顿问题对开发者有什么影响?

该问题影响开发者的工作效率,导致调试和应用性能下降。

为什么谷歌删除了instrumentation stub?

因为instrumentation stub存在问题并增加了代码复杂性,谷歌决定废弃它。

修复后的性能与Android 13相比如何?

修复后性能恢复至Android 13水平,启动时间显著缩短。

国内用户如何获得Android 15的修复?

国内用户需依赖手机厂家主动合入修复,因为谷歌的推送无法工作。

🏷️

标签

➡️

继续阅读