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

如何在Flutter macOS应用中设置权限运行Unix可执行文件?

解决macOS Flutter应用执行Unix可执行文件的权限问题

1. 给可执行文件添加执行权限

下载完fet-cl后,首先要赋予它执行权限,否则系统会直接拒绝运行。在Flutter中可以通过Process.run执行chmod命令:

// 先为文件添加执行权限
await Process.run('chmod', ['+x', '$directory/fet-cl']);
// 再启动进程运行可执行文件
final process = await Process.start('$directory/fet-cl', params);

2. 配置App Sandbox权限

如果你的Flutter应用开启了macOS App Sandbox(默认开启),需要在权限配置中允许执行二进制文件:

  • 打开Xcode项目,找到Runner.entitlements文件;
  • 添加以下两个键值对:
    <key>com.apple.security.cs.allow-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    

这两个权限分别允许应用在内存中执行代码,以及运行未签名的可执行文件(如果你的fet-cl没有苹果开发者签名的话)。

3. 移除Gatekeeper隔离属性

从网络下载的文件会被macOS标记为“来自互联网”,即使权限正确也可能被阻止执行。可以用xattr命令移除隔离属性:

await Process.run('xattr', ['-d', 'com.apple.quarantine', '$directory/fet-cl']);

4. 避免硬编码路径

不要手动拼接应用支持目录的路径,推荐使用path_provider包获取正确路径,避免因用户名、容器ID变化导致的路径错误:

import 'package:path_provider/path_provider.dart';

// 获取应用支持目录
final appSupportDir = await getApplicationSupportDirectory();
final fetPath = '${appSupportDir.path}/fet-cl';

内容的提问来源于stack exchange,提问作者Hüseyin Dursun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:02:23