You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter升级后三星S7/S8旧机型出现SecurityException user -1报错

问题根因

该错误是Flutter 3.10+版本引入的三星老系统兼容性bug,触发场景完全匹配描述:仅在搭载安卓9及更早版本的三星S7/S8等真机上复现,模拟器无异常,首次安装启动正常,二次冷启动直接崩溃。
崩溃触发点是Flutter引擎渲染完第一帧后,FlutterActivity.onFlutterUiDisplayed方法调用了系统reportFullyDrawn接口,而三星老版本系统对该接口的实现存在缺陷,会错误触发跨用户权限校验,抛出SecurityException异常。

可用解决方案

方案1:重写Activity方法直接规避(推荐,改造成本最低)

在主FlutterActivity类中重写onFlutterUiDisplayed方法,手动捕获异常即可,代码示例:

import android.os.Bundle;
import io.flutter.embedding.android.FlutterActivity;

public class MainActivity extends FlutterActivity {
    @Override
    public void onFlutterUiDisplayed() {
        try {
            super.onFlutterUiDisplayed();
        } catch (SecurityException e) {
            // 忽略三星老系统的异常上报
        }
    }
}

如果使用Kotlin写法:

import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
    override fun onFlutterUiDisplayed() {
        try {
            super.onFlutterUiDisplayed()
        } catch (e: SecurityException) {
            // 忽略三星老系统的异常上报
        }
    }
}

方案2:清单文件添加对应权限

在AndroidManifest.xml的manifest标签下添加权限声明:

<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />

方案3:升级Flutter版本

该问题已经在Flutter 3.13.0及以上稳定版本完成修复,可直接升级Flutter版本解决。

此前做的manifest配置检查、flutter doctor检测、flutter clean清理缓存操作均无问题,该问题为Flutter引擎侧兼容性缺陷,和业务侧配置无关。

内容的提问来源于stack exchange,提问作者David Marquardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:36:06