如何将本机 macos 可执行文件与 flutter 应用程序捆绑在一起?

问题描述 投票:0回答:3

我想将一个用 Rust 编写的 macos 原生控制台程序捆绑到 Flutter 应用程序中。

Flutter 应用程序需要从 Dart 调用此程序,如下所示:

Process.runSync("./myconsoleapp", ["argument1", "argument2"]);

Flutter 应用程序似乎找不到

myconsoleapp

有没有办法将

myconsoleapp
嵌入到Flutter应用程序中,并使其可执行?我尝试手动添加,但没有成功。

史蒂夫

flutter dart
3个回答
2
投票

Flutter for windows 只需将 project.exe 与一堆其他文件捆绑到 (

build\windows\runner\debug\
) 中的目录中。没有人可以阻止您将文件添加到该目录。

在您的 dart 代码中,只需从新添加的文件启动一个新进程即可:

var exePath =
    p.join(p.dirname(Platform.resolvedExecutable), 'myFile.exe');
var result = await Process.run(exePath);

1
投票

它找不到您的可执行文件,因为

./
(您的应用程序启动环境中的当前目录)与您的应用程序位置之间没有关系。如果您想访问应用程序中捆绑的某些内容,您应该使用
NSBundle
pathForResource:ofType:
来获取它的路径(通过方法通道或 FFI)。

有没有办法将 myconsoleapp 嵌入到 Flutter 应用程序中,

您可以通过 Xcode 将其添加为捆绑资源。 (这一步没有任何特定于 Flutter 的内容。)

并使其可执行?

大概您的 Rust 构建过程的产物已经是可执行的。


0
投票

我正在尝试解决我的 flutter mac 应用程序中的类似问题。你找到解决办法了吗?

© www.soinside.com 2019 - 2024. All rights reserved.