You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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或非法值
    • 排查视图渲染时是否有线程阻塞或资源占用过高的情况
  • 抓取完整日志定位根因
    flutter logs命令实时获取崩溃前的完整日志,很多时候这个JNI崩溃只是表象,真正的问题会在更早的Dart层或原生日志里暴露出来。

内容的提问来源于stack exchange,提问作者kong Morris

火山引擎 最新活动