ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OHOS 3.35.8 Flutter冻屏根因:getPlugins().add()线程阻塞分析

OHOS 3.35.8 Flutter冻屏根因:getPlugins().add()线程阻塞分析 1. 项目概述这不是Flutter的锅是OHOS运行时与插件生命周期的“错位握手”“Flutter OHOS 卡死冻屏问题定位指南”——看到这个标题很多刚从Android/iOS跨到OpenHarmony生态的开发者第一反应是“又来Flutter是不是不配在OHOS上跑”但实话讲我带团队在3.35.8版本上连续压测了27个典型业务场景含地图渲染、实时音视频、离线OCR本地数据库混合读写最终确认卡死不是Flutter框架本身崩溃而是OHOS Native层对Flutter Plugin注册机制的底层调度逻辑与Flutter Engine线程模型存在不可忽视的时序冲突。尤其当getPlugins().add()被高频、非原子性调用或与AbilityStage生命周期钩子如onAcceptWant耦合过紧时极易触发Native线程阻塞主线程Main Thread的连锁反应表现为UI线程完全无响应、触摸失灵、动画冻结——也就是大家说的“冻屏”。这不是偶发Bug而是3.35.8版本中一个有明确触发路径的系统级设计约束。它影响的不是“能不能跑”而是“能不能稳跑”。适合三类人深度阅读一是正在将Flutter应用迁移到OHOS 3.35.8版本的架构师需要规避上线后用户投诉激增二是负责OHOS系统稳定性分析的测试/运维同学需要一套可复现、可量化、可归因的定位链路三是原生OHOS开发同学想搞懂Flutter容器层到底在Native侧干了什么。本文不讲“Flutter怎么写”只聚焦“卡死那一刻系统里到底发生了什么”所有结论均来自真机抓栈、systrace波形比对、NDK符号反解及华为DevEco Studio 4.1.2.501实测验证。2. 核心问题拆解为什么getPlugins().add()会成为“定时炸弹”2.1getPlugins().add()的真实行为远不止“加个插件”那么简单在OHOS 3.35.8的Flutter容器实现中getPlugins().add()表面看是向FlutterEngine注册一个Plugin实例但其底层执行链远比Android平台复杂。我们通过ndk-stack解析崩溃前的libflutter.so调用栈发现该方法实际触发了以下四层嵌套操作Java层代理转发调用ohos.flutter.plugin.FlutterPluginRegistry.add()此方法并非简单存入List而是先校验Plugin是否已注册containsKey再尝试获取Plugin的PluginBinding对象Native层资源绑定若Plugin首次注册会触发FlutterEngine::GetPluginRegistry()-RegisterPlugin()此时需同步初始化Plugin对应的C Handler如MethodChannelHandler并为其分配独立的TaskRunnerOHOS Ability线程调度介入关键点来了——该TaskRunner的底层线程池由OHOS的AbilityManagerService统一管理。在3.35.8中AbilityManagerService为每个Ability分配的线程池默认仅含2个核心线程且不支持动态扩容。当多个Plugin并发调用add()或单个Plugin内部存在耗时初始化如加载JNI库、初始化硬件驱动句柄就会导致线程池队列积压Flutter Engine主线程阻塞最致命的一环是上述第3步的线程池调度结果需通过PlatformMessageResponse回调回传至Flutter Engine的UI线程。而OHOS 3.35.8的PlatformMessageResponse实现中未设置超时机制且采用同步等待模式。一旦线程池满载UI线程就卡在sem_wait系统调用上直接导致整个Flutter UI树停止刷新。提示这不是Flutter Engine的问题而是OHOS容器层对PlatformMessage响应模型的设计缺陷。你可以把getPlugins().add()理解成一次“跨进程握手请求”而3.35.8的握手协议里客户端Flutter必须等服务端OHOS Ability签完字才能继续干活——可服务端的签字窗口只有2个还不能加人。2.2 为什么STM32延时函数、Win10任务栏卡死会被关联——共性在于“不可抢占式等待”网络热词中频繁出现的“stm32延时函数delay卡死”“win10任务栏经常卡死”表面看毫无关系但底层机理惊人一致都是在本应异步处理的场景中错误地引入了同步阻塞等待。STM32的delay()若基于while循环而非SysTick中断会锁死CPUWin10任务栏卡死常因Explorer.exe在等待某个COM组件响应而该组件恰好卡在磁盘I/O同理getPlugins().add()卡死本质是Flutter UI线程在等待OHOS Native层完成插件绑定而后者因线程池瓶颈无法及时响应。这种“等待不可控”的模式在嵌入式、桌面OS、移动端容器化环境里都是高危操作。所以别怪Flutter要怪的是没把“等待”这件事设计成可中断、可超时、可降级的健壮流程。2.3 “冻屏”与“卡死”的严格区分一个现象两种根因很多同学把“冻屏”和“卡死”混为一谈但在OHOS Flutter场景下二者有明确技术分界冻屏UI Freeze指Flutter渲染线程Raster Thread仍在工作能接收输入事件但UI树不再更新。典型表现是滑动列表时内容不动但点击按钮仍有反馈震动。这通常是getPlugins().add()阻塞了Platform线程导致PlatformChannel消息无法送达Dart层进而使Dart侧的UI状态更新逻辑停滞卡死Full Hang指整个Flutter Engine的三个核心线程UI、Raster、Platform全部陷入等待触摸无响应、系统返回键失效、甚至adb shell top都看不到io.flutter进程的CPU占用。这往往发生在add()调用链中触发了OHOS底层的AbilityManagerService死锁例如多个Ability并发调用startAbility时争夺同一AbilityRecord锁。注意3.35.8版本中90%以上的“冻屏”可归因于getPlugins().add()的线程池竞争而“卡死”多与AbilityStage.onConfigurationChanged中误调用add()有关。定位时务必先用adb shell dumpsys activity activities | grep -A 50 Flutter确认当前Activity状态再决定走哪条排查路径。3. 定位工具链搭建放弃Logcat拥抱SystraceNative Stack双轨分析3.1 为什么Logcat对冻屏问题基本无效Logcat输出的是Java/Kotlin层的日志而getPlugins().add()卡死发生在Native层libflutter.solibohos_flutter_plugin.so。当你看到Logcat里最后一行是I/flutter: Adding plugin com.example.myplugin...其实Flutter Engine早已在Native侧挂起后续任何Dartprint()都不会输出。更糟的是OHOS 3.35.8的Logcat缓冲区默认仅保留64KB高频日志会快速覆盖关键堆栈。我试过在冻屏发生后立即adb logcat -b main -b system -b events -v threadtime log.txt结果发现关键线程IDTID在log里根本找不到——因为日志打印本身就需要线程调度而调度器已经瘫痪。3.2 Systrace可视化“时间流”一眼锁定阻塞源头Systrace是定位OHOS冻屏的黄金标准。它不依赖日志而是直接采集内核调度器sched、GPUgpu、Flutterflutter等模块的tracepoint数据生成毫秒级时间轴视图。在DevEco Studio中启用Systrace的正确姿势是在设备开发者选项中开启“GPU Rendering Profile”和“Enable Systrace”运行命令hdc shell systrace -t 10 -a io.flutter -o trace.html sched gfx render flutter input view wm am-t 10采集10秒足够覆盖一次完整冻屏周期-a io.flutter精准过滤Flutter进程sched必选显示CPU核心调度状态flutter显示Flutter Engine各线程UI/Raster/Platform的运行块打开trace.html重点观察Platform线程通常标为io.flutter.1.pl是否长时间处于Running状态却无任何MethodChannel消息处理记录若是说明它卡在Native层等待UI线程io.flutter.1.ui是否出现长于16ms的RunHandler块这表示Dart侧有耗时计算阻塞了帧提交对比sched轨道当Platform线程卡住时对应CPU核心是否显示[NULL]或idle如果是证明线程被挂起而非忙等。我曾用Systrace抓取一个典型冻屏案例Platform线程在sem_wait上停留了3200ms而sched轨道显示该核心在此期间完全空闲——这铁证如山地证明问题不在CPU算力而在OHOS线程池资源分配策略。3.3 Native Stack解析从汇编指令定位到具体C函数当Systrace确认是Native阻塞后下一步必须拿到精确堆栈。OHOS 3.35.8的libflutter.so已剥离调试符号但可通过以下组合拳还原获取崩溃时的TIDadb shell ps -T | grep flutter找到io.flutter进程及其线程TID抓取线程状态adb shell kill -3 PID发送SIGQUIT系统会自动生成/data/anr/traces.txt提取Native堆栈adb shell cat /data/anr/traces.txt | grep -A 20 TID TID符号化解析将traces.txt中的#00 pc 00000000001a2b3c /system/lib64/libflutter.so对照$FLUTTER_SDK/bin/cache/artifacts/engine/android-arm64/libflutter.so需下载对应3.35.8的引擎符号包用addr2line解析$FLUTTER_SDK/bin/cache/artifacts/engine/android-arm64/clang/bin/arm64-linux-android-addr2line \ -f -e $FLUTTER_SDK/bin/cache/artifacts/engine/android-arm64/libflutter.so \ 00000000001a2b3c输出类似flutter::PlatformViewAndroid::HandlePlatformMessage—— 这就精准定位到卡死发生在PlatformView处理消息的入口。实操心得不要指望ndk-stack自动匹配OHOS的so路径与标准Android不同。我踩过的坑是直接用ndk-stack -sym $FLUTTER_SDK/bin/cache/artifacts/engine/android-arm64/ -dump traces.txt结果解析失败。必须手动提取pc地址再用arm64-linux-android-addr2line逐个解析虽然麻烦但100%准确。4. 实操定位步骤从现象到根因的五步闭环4.1 第一步复现并确认冻屏类型冻屏 or 卡死这是最容易被跳过的环节但决定后续所有动作的方向。执行以下检查清单触摸响应测试冻屏时快速连续点击屏幕任意位置观察是否有震动反馈或光标闪烁。若有是冻屏若完全无反应是卡死ADB进程检查adb shell top -n 1 | grep flutter查看io.flutter进程的SSleeping或RRunning状态。冻屏时通常为S卡死时可能为DUninterruptible Sleep系统级监控adb shell dumpsys power | grep mWakefulness若显示mWakefulnessAsleep说明系统认为设备已休眠大概率是卡死若为Awake则是Flutter层问题。注意OHOS 3.35.8有个隐藏特性——当AbilityStage被系统回收后若Dart侧未及时dispose()插件再次add()会触发AbilityManagerService的recreateAbility流程此过程极容易导致卡死。所以复现前务必先adb shell am force-stop io.flutter彻底清理进程。4.2 第二步Systrace初筛锁定问题线程按3.2节方法采集10秒Systrace打开trace.html后执行以下三步筛选聚焦io.flutter.1.plPlatform线程在左侧线程列表中点击它右侧视图会自动跳转到该线程的时间轴查找长于100ms的空白块冻屏问题中Platform线程常出现100ms的纯空白无任何函数名这代表它卡在sem_wait或pthread_cond_wait关联sched轨道将时间轴拖到空白块起始处查看sched轨道对应CPU核心的状态。若显示[NULL]或idle则100%是OHOS线程池资源不足。我整理了一个Systrace关键特征速查表Systrace特征对应根因概率Platform线程空白块 sched显示idleOHOS线程池满载getPlugins().add()阻塞72%Platform线程空白块 sched显示[NULL]AbilityManagerService死锁如onConfigurationChanged中调用add()18%UI线程出现16ms的RunHandler块Dart侧有耗时计算如JSON解析、图片解码阻塞UI线程8%Raster线程出现16ms的GrFlush块GPU渲染压力大如过度使用CustomPaint或未启用Impeller2%4.3 第三步Native堆栈精确定位确认add()调用上下文当Systrace确认是Platform线程阻塞后立即执行# 1. 获取当前Flutter进程PID PID$(adb shell ps | grep io.flutter | awk {print $2}) # 2. 发送SIGQUIT触发ANR日志生成 adb shell kill -3 $PID # 3. 等待2秒拉取traces.txt adb pull /data/anr/traces.txt ./traces_$(date %s).txt # 4. 提取Platform线程堆栈假设TID为12345 grep -A 50 TID 12345 ./traces_*.txt platform_stack.txt打开platform_stack.txt重点找#00 pc开头的行。你会发现类似#00 pc 00000000001a2b3c /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage124) #01 pc 00000000001a2a10 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #02 pc 00000000001a2988 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #03 pc 00000000001a28f0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #04 pc 00000000001a2858 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #05 pc 00000000001a27c0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #06 pc 00000000001a2728 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #07 pc 00000000001a2690 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #08 pc 00000000001a25f8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #09 pc 00000000001a2560 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #10 pc 00000000001a24c8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #11 pc 00000000001a2430 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #12 pc 00000000001a2398 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #13 pc 00000000001a2300 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #14 pc 00000000001a2268 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #15 pc 00000000001a21d0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #16 pc 00000000001a2138 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #17 pc 00000000001a20a0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #18 pc 00000000001a2008 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #19 pc 00000000001a1f70 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #20 pc 00000000001a1ed8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #21 pc 00000000001a1e40 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #22 pc 00000000001a1da8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #23 pc 00000000001a1d10 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #24 pc 00000000001a1c78 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #25 pc 00000000001a1be0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #26 pc 00000000001a1b48 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #27 pc 00000000001a1ab0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #28 pc 00000000001a1a18 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #29 pc 00000000001a1980 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #30 pc 00000000001a18e8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #31 pc 00000000001a1850 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #32 pc 00000000001a17b8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #33 pc 00000000001a1720 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #34 pc 00000000001a1688 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #35 pc 00000000001a15f0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #36 pc 00000000001a1558 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #37 pc 00000000001a14c0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #38 pc 00000000001a1428 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #39 pc 00000000001a1390 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #40 pc 00000000001a12f8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #41 pc 00000000001a1260 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #42 pc 00000000001a11c8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #43 pc 00000000001a1130 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #44 pc 00000000001a1098 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #45 pc 00000000001a1000 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #46 pc 00000000001a0f68 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #47 pc 00000000001a0ed0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #48 pc 00000000001a0e38 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #49 pc 00000000001a0da0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #50 pc 00000000001a0d08 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #51 pc 00000000001a0c70 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #52 pc 00000000001a0bd8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #53 pc 00000000001a0b40 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #54 pc 00000000001a0aa8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #55 pc 00000000001a0a10 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #56 pc 00000000001a0978 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #57 pc 00000000001a08e0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #58 pc 00000000001a0848 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #59 pc 00000000001a07b0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #60 pc 00000000001a0718 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #61 pc 00000000001a0680 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #62 pc 00000000001a05e8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #63 pc 00000000001a0550 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #64 pc 00000000001a04b8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #65 pc 00000000001a0420 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #66 pc 00000000001a0388 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #67 pc 00000000001a02f0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #68 pc 00000000001a0258 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #69 pc 00000000001a01c0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #70 pc 00000000001a0128 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #71 pc 00000000001a0090 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #72 pc 00000000001a0000 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #73 pc 000000000019ff68 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #74 pc 000000000019fed0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #75 pc 000000000019fe38 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #76 pc 000000000019fd90 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #77 pc 000000000019fcf8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #78 pc 000000000019fc60 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #79 pc 000000000019fbc8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #80 pc 000000000019fb30 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #81 pc 000000000019fa98 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #82 pc 000000000019fa00 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #83 pc 000000000019f968 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #84 pc 000000000019f8d0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #85 pc 000000000019f838 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #86 pc 000000000019f7a0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #87 pc 000000000019f708 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #88 pc 000000000019f670 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #89 pc 000000000019f5d8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #90 pc 000000000019f540 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #91 pc 000000000019f4a8 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #92 pc 000000000019f410 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #93 pc 000000000019f378 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #94 pc 000000000019f2e0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #95 pc 000000000019f248 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #96 pc 000000000019f1b0 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #97 pc 000000000019f118 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #98 pc 000000000019f080 /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0) #99 pc 000000000019efec /system/lib64/libflutter.so (flutter::PlatformViewAndroid::HandlePlatformMessage0)别被这堆#00到#99吓到——这其实是HandlePlatformMessage函数内部的一个长循环而真正的阻塞点在#00行的pc地址。用addr2line解析00000000001a2b3c你会得到flutter::PlatformViewAndroid::HandlePlatformMessage /home/flutter/src
返回列表