这个报错是因为在 Flutter 项目中使用了 Java 的 File 类,但是在 Java 9 及以后的版本中,File 类的 path 字段变为了私有的 final 字段。而在 Flutter 项目中,File 类的 path 字段需要被访问到。

解决这个问题的方法是打开 Java 的 'java.io' 模块,让它对未命名模块开放。在项目的 build.gradle 文件中的 android 部分添加以下配置:

android {
    // ...
    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }
    // ...
    packagingOptions {
        jniLibs {
            // 将 libflutter.so 排除在外
            exclude 'libflutter.so'
        }
    }
    // ...
}

然后,在项目的 android/app/src/main 文件夹下创建一个 module-info.java 文件,内容如下:

open module unnamed {
    // 打开 java.io 模块
    opens java.io;
}

这样就可以解决报错了。

Flutter 报错: Unable to make field private final java.lang.String java.io.File.path accessible

原文地址: https://www.cveoy.top/t/topic/pd6Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录