Flutter Android端platform_view_android_jni.cc致命崩溃问题求助
这是Flutter在Android端JNI层触发的致命崩溃,我帮你拆解下日志细节,再给你几个实用的排查修复方向:
崩溃日志详情
F/flutter (13556): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(60)] 检查失败:CheckException(env)。 F/libc (13556): 致命信号6 (SIGABRT),代码-6,线程ID 13556 (yapp.mysurvey) *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: 'HUAWEI/MHA-L29/HWMHA:8.0.0/HUAWEIMHA-L29/366(C636):user/release-keys' Revision: '0' ABI: 'arm64' pid: 13556, tid: 13556, name: yapp.mysurvey>>> com.myapp.mysurvey <<< signal 6 (SIGABRT), code -...
核心错误分析
日志里的[FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(60)] 检查失败:CheckException(env)是关键——这说明Flutter和Android原生交互的JNI桥接层,捕获到了原生端未处理的异常,直接触发了进程终止信号(SIGABRT)。
排查修复步骤
给原生交互代码加异常捕获
重点检查MethodChannel/EventChannel的Android原生实现,有没有遗漏的异常(比如空指针、参数非法等)。JNI层对原生异常零容忍,只要有未处理的异常穿透过来就会崩溃。建议给所有MethodCallHandler逻辑套上try-catch,把异常转为Flutter侧能接收的错误:methodChannel.setMethodCallHandler((call, result) -> { try { // 你的业务逻辑实现 result.success("处理完成"); } catch (Exception e) { result.error("NATIVE_ERROR", e.getMessage(), e.getStackTrace()); } });验证Flutter与Android环境的兼容性
你的设备是Android 8.0、ABI为arm64,部分旧版Flutter在这类环境下存在JNI兼容问题。可以尝试:- 运行
flutter upgrade升级到最新稳定版Flutter - 在
app/build.gradle里指定兼容的NDK版本(比如Flutter 3.x常用的25.2.9519653)
- 运行
排查PlatformView相关问题
错误出自platform_view_android_jni.cc,大概率和Flutter嵌入原生视图(比如AndroidView、自定义PlatformView)有关:- 检查自定义PlatformView的生命周期方法(
onCreate/onDispose等)有没有异常 - 确认原生视图的初始化参数合法,没有传入null或非法值
- 排查视图渲染时是否有线程阻塞或资源占用过高的情况
- 检查自定义PlatformView的生命周期方法(
抓取完整日志定位根因
用flutter logs命令实时获取崩溃前的完整日志,很多时候这个JNI崩溃只是表象,真正的问题会在更早的Dart层或原生日志里暴露出来。
内容的提问来源于stack exchange,提问作者kong Morris




