M1 Mac 环境下Flutter项目在Android设备及模拟器运行时报Javac编译错误
可行解决方案
方案1:切换为Android Studio内置JDK(优先推荐,新手友好)
- 打开Android Studio,进入
Preferences(顶部菜单栏点击Android Studio -> 选择Settings/Preferences) - 依次找到
Build, Execution, Deployment->Build Tools->Gradle配置页 - 在
Gradle JDK下拉选项中选择Embedded JDK(Android Studio自带的JDK版本默认和Gradle版本适配,无兼容问题) - 保存配置后,进入Flutter项目根目录,依次执行以下命令清理缓存:
flutter clean flutter pub get - 清理完成后重新连接安卓设备运行项目即可。
方案2:匹配项目Gradle与JDK版本
该报错核心原因是低版本Gradle与高版本JDK不兼容:JDK16及以上版本收紧了内部模块的导出权限,7.3以下版本的Gradle未适配该规则,运行就会触发权限错误。
- 打开Flutter项目下的
android/gradle/wrapper/gradle-wrapper.properties文件,查看distributionUrl参数对应的Gradle版本:- Gradle版本 ≤7.2:必须搭配JDK11及以下版本使用
- Gradle版本 ≥7.3:可搭配JDK17使用
- 若不想修改本地JDK版本,可直接升级项目Gradle版本,将
distributionUrl修改为适配高版本JDK的版本,示例(适配JDK17):distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip - 同步修改
android/build.gradle文件中的Android Gradle插件版本,需和Gradle版本对应:
Gradle7.6.x对应的插件版本为7.4.x,修改示例:dependencies { classpath 'com.android.tools.build:gradle:7.4.2' } - 修改完成后执行
flutter clean、flutter pub get,再重新运行项目即可。
M1芯片安卓模拟器无法运行补充方案
M1芯片为ARM架构,无法兼容x86架构的安卓模拟器镜像,按以下步骤修改即可:
- 打开Android Studio的
SDK Manager,进入SDK Platforms标签页,勾选右上角Show Package Details - 展开你需要使用的Android系统版本子项,选择后缀为
ARM 64 v8a的系统镜像下载安装,不要选择x86/x86_64架构的镜像 - 新建模拟器时选择已安装的ARM架构镜像,即可正常启动运行。
内容的提问来源于stack exchange,提问作者Rory Murphy
相关产品推荐
相关产品推荐

