Flutter Dart Process.run Необработанное исключение: ProcessException: система не может найти указанный файл
Я пытаюсь запустить командную строку с помощью дротика
Process.run
Вот мой код
var result = await Process.run('axmldec', [ '-o','C:/test/output.xml'
, 'C:/test/AndroidManifest.xml' ]);
думал, что проблема в косой черте / поэтому я тоже попробовал это
var result = await Process.run('axmldec', [ '-o','C:\\test\\output.xml'
, 'C:\\test\\AndroidManifest.xml' ]);
Пробовал диски C: и D: безуспешно. Я получаю ошибку
Command: axmldec -o D:/test/output.xml D:/test/AndroidManifest.xml
#0 _ProcessImpl._start (dart:io-patch/process_patch.dart:390:33)
#1 Process.start (dart:io-patch/process_patch.dart:36:20)
#2 _runNonInteractiveProcess (dart:io-patch/process_patch.dart:565:18)
#3 Process.run (dart:io-patch/process_patch.dart:47:12)
#4 Home._testUnzip (package:apk_analysis/main.dart:112:32)
#5 Home.build.<anonymous closure>.<anonymous closure> (package:apk_analysis/main.dart:60:25)
#6 _rootRunUnary (dart:async/zone.dart:1362:47)
#7 _CustomZone.runUnary (dart:async/zone.dart:1265:19)
#8 _FutureListener.handleValue (dart:async/future_impl.dart:152:18)
#9 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:704:45)
#10 Future._propagateToListeners (dart:async/future_impl.dart:733:32)
#11 Future._completeWithValue (dart:async/future_impl.dart:539:5)
#12 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:254:13)
#13 FilePickerCross.importMultipleFromStorage (package:file_picker_cross/file_picker_cross.dart)
<asynchronous suspension>
И когда я запускаю ту же команду в командной строке, она работает без проблем.
2 ответа
Я нашел решение. Проблема, похоже, заключалась в пути самой команды "axmldec"
несмотря на то, что у него были переменные среды, процесс dart не распознал его. Я использовал полный путь, и это сработало
var result = Process.run('c:\\tool\\axmldec.exe', [ '-o','D:\\test\\output.xml'
, 'D:\\test\\AndroidManifest.xml' ]);
МаркировкаrunInShell
значение true может помочь при запуске команд (например,flutter
комнад).
Process.run(
'flutter',
[ 'create', 'example' ],
runInShell: true,
workingDirectory: directory,
);