Flutter桌面MacOS端无法在项目文件夹外创建目录如何解决
问题根因
MacOS 对桌面应用默认开启 App Sandbox 沙箱隔离规则,即便你已经给 VSCode、终端授予了全磁盘访问权限,你编译运行的 Flutter 桌面应用本身是独立的运行进程,沙箱限制会直接禁止它访问项目目录外的路径,这是触发权限报错的核心原因。
解决方案步骤
- 调整应用权限配置
找到 Flutter 项目macos目录下的Release.entitlements、DebugProfile.entitlements两个配置文件,按需修改权限规则:- 仅本地自用/企业分发无需上架 App Store 可以直接关闭沙箱,将配置中
com.apple.security.app-sandbox对应的布尔值改为false - 需要保留沙箱的场景,添加对应路径的访问权限:
<!-- 允许读写用户主动选择的任意路径 --> <key>com.apple.security.files.user-selected.read-write</key> <true/> <!-- 允许读写用户主目录下指定路径 --> <key>com.apple.security.files.home-relative-path.read-write</key> <string>/Users/test/</string> - 仅本地自用/企业分发无需上架 App Store 可以直接关闭沙箱,将配置中
- 给应用授予系统级全磁盘访问权限
打开 Mac 系统设置→安全与隐私→隐私→完全磁盘访问权限,解锁后点击+号,找到编译生成的应用文件(默认路径为项目下build/macos/Build/Products/Debug/你的应用名.app或 Release 对应路径),添加并勾选权限。 - 重新编译运行
执行flutter clean清理旧缓存后,重新运行flutter run -d macos测试目录创建逻辑即可。
提示:如果需要上架 App Store,不能直接关闭沙箱,需严格按照苹果审核规则申请对应的权限条目,避免审核被拒。
内容的提问来源于stack exchange,提问作者Chen
相关产品推荐
相关产品推荐

