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

NixOS环境下执行flutter run报错,求解决方案

解决NixOS上Flutter run时Gradle只读目录报错问题

问题描述

执行flutter run时出现以下错误:

  • What went wrong:
    Error resolving plugin [id: 'dev.flutter.flutter-gradle-plugin', version: '1.0.0']

A problem occurred configuring project ':gradle'.
Could not create service of type OutputFilesRepository using ExecutionGradleServices.createOutputFilesRepository().
Failed to create parent directory '/nix/store/lbi43bsi63zvp7wjgswsp1vjrg4pv9b2-flutter-3.13.4-unwrapped/packages/flutter_tools/gradle/.gradle' when creating directory '/nix/store/lbi43bsi63zvp7wjgswsp1vjrg4pv9b2-flutter-3.13.4-unwrapped/packages/flutter_tools/gradle/.gradle/buildOutputCleanup'

核心原因是NixOS的/nix/store为只读目录,但Gradle默认尝试在Flutter工具的安装目录下生成缓存文件,触发权限不足报错。

解决方法

方法1:临时指定Gradle可写缓存目录

运行Flutter命令时,通过环境变量将Gradle用户目录指向个人可写路径:

GRADLE_USER_HOME="$HOME/.gradle" flutter run

如果需要长期生效,可将环境变量写入shell配置文件(如~/.bashrc或~/.zshrc):

echo 'export GRADLE_USER_HOME="$HOME/.gradle"' >> ~/.bashrc
source ~/.bashrc

方法2:通过NixOS系统配置全局生效

在/etc/nixos/configuration.nix中添加全局环境变量配置:

environment.variables = {
  GRADLE_USER_HOME = "/home/你的用户名/.gradle";
};

执行以下命令应用配置:

sudo nixos-rebuild switch

方法3:调整项目本地Gradle配置

在Flutter项目的android/gradle/wrapper/gradle-wrapper.properties文件中,修改distributionUrl指向本地可写目录下的Gradle包,或直接使用Nix提供的Gradle路径(需确保对应路径有读写权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:22:10