Flutter / Android:从资源启动可执行文件

4ktjp1zp  于 6个月前  发布在  Flutter
关注(0)|答案(1)|浏览(112)

在我的flutter应用程序中,我有一个可执行的资产,我喜欢在android上启动它作为交互式子进程。我的测试代码是这样的:

rootBundle.load("assets/engines/stockfish-android-armv8").then((buffer) async {
      String name = "${(await getApplicationDocumentsDirectory()).path}/stockfish-android-armv8";
      final File file = File(name);
      await file.writeAsBytes(buffer.buffer.asUint8List());

      ProcessResult p1 = Process.runSync("chmod", ["a+x", name]);
      ProcessResult p2 = Process.runSync(name, []);
}

字符串
所以首先将可执行文件从assets复制到Documents目录,然后用a+x(或u+x,无所谓,该进程的退出代码是0 --所以看起来没问题)对其进行chmodded。
但是当尝试启动该进程时,它会给出ProcessException: Permission denied Command: /data/user/0/com.example.chess_partner/app_flutter/stockfish-android-armv8
当文件未被修改时,例外情况是“文本文件忙碌”。
我是一个很好的想法……任何人都有一个提示吗?
感谢和最好的问候,托比亚斯

n9vozmp4

n9vozmp41#

在这种情况下,可以通过以下方式启动该过程:

Process p2 = await Process.start(name, [], runInShell: true);

字符串
在shell中运行进程似乎是允许的。
最好的问候,托拜厄斯

相关问题