初步排查Flutter开发中小米设备屏幕镜像点击失效问题
初步排查Flutter开发中小米设备屏幕镜像点击失效问题
初步排查Flutter开发中小米设备屏幕镜像点击失效问题
在 Flutter 项目开发过程中,部分开发者可能会遇到一个棘手的问题:当使用 Android Studio 的屏幕镜像功能,并在镜像窗口中直接点击 Flutter 应用的界面元素时,镜像画面会突然丢失或中断。本文主要记录针对此现象,特别是涉及小米设备时的初步排查方向。
问题现象
当通过 Android Studio 连接小米物理设备(例如型号 M2104K10AC, API 34)进行 Flutter 应用调试时,若启用内置的屏幕镜像功能,在镜像出来的电脑屏幕上点击App的任何按钮或可交互区域,均会导致镜像画面中断或直接消失。应用本身在物理设备上可能仍在正常运行,但 Android Studio 的镜像功能会失效。
日志分析与初步判断
通过分析 Android Studio 的 IDEA 日志 (idea.log),我们观察到在问题发生时,通常会反复出现以下类型的警告和错误信息:
WARN - ScreenSharingAgent Xiaomi M2104K10AC API 34 - Aborted
WARN - ScreenSharingAgent Xiaomi M2104K10AC API 34 - terminated with code 134
这些日志条目清晰地指出了几个关键点:
- 设备特定性: 日志中明确提到了设备型号 “Xiaomi M2104K10AC” 和操作系统版本 “API 34”。
- 组件崩溃:
ScreenSharingAgent
是 Android Studio 用于实现屏幕镜像功能的代理程序,它在设备端运行。日志显示这个代理程序 “Aborted” (中止) 并且 “terminated with code 134” (以代码134终止)。错误码 134 通常与 SIGABRT 信号相关,表明代理程序自身遇到了严重内部错误并主动退出。
基于以上日志,可以初步判断:该问题很可能是 Android Studio 的屏幕共享代理 (ScreenSharingAgent
) 与特定小米设备型号及系统版本之间存在兼容性问题或未处理的边界情况,导致代理程序在接收到点击交互后崩溃。 这直接解释了为何点击镜像界面会导致画面丢失。
解决思路与建议措施
鉴于初步判断问题根源在于 Android Studio 屏幕镜像代理与小米设备的兼容性,可以尝试以下方向进行解决
- 直接在物理设备上操作:
- 如果仅仅是镜像交互时出现问题,而直接在物理设备屏幕上操作 Flutter 应用一切正常,则进一步印证了问题出在镜像环节。
- 换个手机吧
- 起码不要是小米这种破坏了大量原生特性的手机,比如会出现不支持预见式返回/预测性返回手势,媒体选择器弹出的上滑动画消失,不支持透明应用图标等等问题。前两个问题关闭系统优化/MIUI优化都无法解决,最后一个问题关闭系统优化/MIUI可以解决,但是还有多少问题是无法解决的呢?
总结
当在 Flutter 开发中遇到于小米设备上点击 Android Studio 屏幕镜像导致画面丢失的问题时,根据日志分析,初步确定是 Android Studio 的屏幕镜像代理与特定小米设备及系统版本之间存在兼容性冲突所致。 我的评价是:**小米,破坏大量原生特性。
本文由作者按照 CC BY 4.0 进行授权