dart / flutter 使用 sudo 运行进程

2024-01-09

我想为 mac 桌面开发一个 flutter 应用程序并使用以下命令访问 macs powermetricssudo powermetrics有没有办法在第一次运行时向用户询问此命令的 sudo 权限?


嗨,我只是在玩颤振,我正在解决同样的问题。

一般来说,我们需要从 bash 调用 GUI 版本的 sudo。

运行需要 sudo 的 dscacheutil 的 bash 命令示例:

/usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'

然后我尝试在 flutter 中通过 Process.run() 运行此命令,但没有成功。然后我创建了测试 bash 脚本,并尝试使用 Process.run() 直接运行 bash 脚本。它告诉我我没有特权。

所以我必须在 Xcode 中将 App Sandbox 值更改为 NO。 我们必须打开Runner.xcodeproj直接在里面macos folder.

然后将App Sandbox更改为NO:

不,我们必须准备 bash 脚本:

#!/bin/bash
/usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'

将其保存在某个地方,最后一步我们可以在 flutter 中调用这个 bash 脚本。

void main() {

      Process.run('/Users/nikix/Desktop/bash_test.sh',[]).then((result){
      stdout.write(result.stdout);
      stderr.write(result.stderr);
      });
}

现在我用 sudo 得到 GUI 提示,它似乎可以工作。但我真的不知道这是否是正确的方法。我对扑动很陌生。

UPDATE:

我尝试过构建 flutter 应用程序flutter build macos但bash脚本无法运行。然后我发现这个包名为 process_run https://pub.dev/packages/process_run

然后我可以从构建的应用程序运行自定义 bash 脚本

在您的 yaml pubspec.yaml 中添加该包:

dependencies:
  flutter:
    sdk: flutter
  process_run: any

下一步是允许沙箱应用程序在 xcode 中用于发布版本的应用程序:

最后一步在 Dart 中运行我们的 bash 代码:

import 'package:process_run/shell.dart';
void main() {

  var shell = Shell();

  shell.run("""
    #!/bin/bash
    /usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'
    """).then((result){
      print('Shell script done!');
    }).catchError((onError) {
      print('Shell.run error!');
      print(onError);
    });
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dart / flutter 使用 sudo 运行进程 的相关文章

随机推荐

  • 使用事件过滤器消费事件

    首先 谁能向我解释一下 为什么我的MouseEvent无论哪个都会被消耗Alert 我选择的选项 我想这与调用有关Alert在一个EventFilter 但我还不清楚 public class EventFilterConsumeError
  • 是否可以在 sails.js / Waterline 中重命名 `createdAt` 和 `updatedAt`

    使用 SailsJS 中的 Waterline ORM 我的默认值是autoCreatedAt and autoUpdatedAt设置为 false 但我仍然需要仅使用不同的字段名称 DBA 请求 来实现该功能 有没有办法 为自动生成的字段
  • 使用套接字时“流结束”是什么意思

    在 Java 中使用套接字时 如何在开始处理数据之前判断客户端是否已完成所有 二进制 数据的发送 例如考虑 istream new BufferedInputStream socket getInputStream ostream new
  • Swift:替换字符串中的字符 - 没有 stringByReplacingOccurrencesOfString

    好吧 假设我有一个String like let myString my string hello 我想用 替换 我到目前为止 let characters map Array myString 0 0 它返回一个MapCollection
  • 缩放后为不同标签设置相同的字体大小

    我正在制作一个有 3 个标签的应用程序 我正在使用标签自动收缩来帮助调整标签的字体大小以适应设备 这些标签彼此相邻 因此这意味着我希望它们具有相同的字体大小 目前发生的情况是 因为它们有不同数量的文本 它们最终会缩小到不同的字体大小 有没有
  • 混淆 JavaFX 应用程序

    由于 fxml files 使用控制器类来处理事件 那么如何混淆 JavaFX 应用程序呢 当混淆的控制器类具有不同的名称和路径时 fxml 文件无法找到它们 混淆后编辑 fxml 文件不是我正在寻找的解决方案 还有其他选择吗 没有必要重新
  • OkHttp SSLHandshakeException SSL 握手中止 SSL 库中出现故障,协议错误

    04 23 17 17 38 434 21599 21956 D NativeCrypto ssl 0x0 NativeCrypto SSL interrupt 04 23 17 17 38 435 21599 21956 D OkHttp
  • 夏令时和 Cron

    如果 Cron 有一项工作安排在凌晨 2 点运行 另一项工作在凌晨 3 点运行 这些工作将如何受到夏令时的影响 当时间向后移动一小时时 时间是否会直接从凌晨 2 59 59 变为凌晨 2 00 00 这意味着凌晨 2 点的作业将运行两次 凌
  • 运行时设置 TextView 在 RemoteView 中的位置

    亲爱的大家 我正在尝试在应用程序小部件中设置 TextView 的位置 基本上 直接访问 TextView 的属性是有效的 myRemoteView setTextColor R id myTextView Color WHITE work
  • 检测鼠标被按住

    我试图检测何时按住鼠标而不是单击鼠标 这就是我所拥有的 但我希望能够检测到鼠标被按住 而不是点击计数 void mouseDown NSEvent event instead of clickCount I want my if state
  • 为什么 `'↊'.isnumeric()` 为 false?

    根据官方 Unicode 联盟代码表 http www unicode org charts PDF U2150 pdf 所有这些都是数字 然而 当我要求 Python 告诉我哪些是数字时 它们都是数字 甚至 除了四个 In 252
  • Postgres 中从多行到单列

    我通过 pgAdmin 4 使用具有只读访问权限的 Postgres 9 5 并且尝试编写一个选择查询来转换来自此表单的数据 username filters groups roles kd24 Khaled lt 27607 gt V1
  • 如何使用 SIMD 比较两个向量并获得单个布尔结果?

    我有两个分别包含 4 个整数的向量 我想使用 SIMD 命令来比较它们 假设根据比较结果生成一个结果向量 其中每个条目为 0 或 1 然后 我想将结果向量与 4 个零的向量进行比较 只有当它们相等时才执行某些操作 你知道我可以使用哪些 SI
  • 如何根据对象的属性比较两个 NSSet?

    我有两个 nsset nsset1 person id 1 person id 2 person id 3 nsset2 person id 1 person id 2 结果应该是 nsset1 nsset2 person with id
  • 在自己的 php 框架中管理 URL 路由

    我正在创建一个 PHP 框架 但我有一些疑问 框架以这种方式获取 url http web com site index 它采用第一个参数来加载控制器 site 然后加载特定的动作 index 如果您已将框架安装在基本 URL 中 则可以正
  • 如何在 Cypress.io 中强制测试失败

    在 Cypress io 中 如果满足特定条件 有没有一种方法可以强制测试失败 例如 在我的网页上 如果字符串 抱歉 出了点问题 出现在我希望测试失败的页面上 目前这就是我正在做的事情
  • 有什么方法可以知道哪个集合视图单元格位于特定点?

    我有一个 CGPoint 我想知道我的集合视图中的哪个单元格当前包含该点 有什么简单的方法可以做到这一点还是我必须编写自己的方法 我没用过UICollectionView就这么多 但有一个看起来很完美的方法 NSIndexPath inde
  • 在 Visual Studio 项目模板中添加引用?

    我正在为 VS2015 创建一个多项目模板 其中创建的项目之一引用另一个项目 如何使用模板添加参考 如果我使用 VS GUI 添加引用 它会将以下内容添加到 vcxproj 文件中
  • 理解 Node.js 中的 Promise 拒绝

    我正在尝试理解 Node js 中的 Promise 这是示例代码 con queryReturnPromise SELECT FROM bookings WHERE driverId accId AND bookingStatus con
  • dart / flutter 使用 sudo 运行进程

    我想为 mac 桌面开发一个 flutter 应用程序并使用以下命令访问 macs powermetricssudo powermetrics有没有办法在第一次运行时向用户询问此命令的 sudo 权限 嗨 我只是在玩颤振 我正在解决同样的问