在我的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
。
当文件未被修改时,例外情况是“文本文件忙碌”。
我是一个很好的想法……任何人都有一个提示吗?
感谢和最好的问候,托比亚斯
1条答案
按热度按时间n9vozmp41#
在这种情况下,可以通过以下方式启动该过程:
字符串
在shell中运行进程似乎是允许的。
最好的问候,托拜厄斯