|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2014
Сообщений: 42
|
Компиляция с помощью fcsh, вызванного как NativeProcess
Пытаюсь скомпилировать флешку через fcsh.exe, вызванный как NativeProcess
Тrace показывает только запуск оболочки, но команду компиляции не обрабатывает. И ошибок никаких не выдаёт. Какие есть мысли? Вывод команды trace Adobe Flex Compiler SHell (fcsh) Version 4.6.0 build 23201 Copyright (c) 2004-2011 Adobe Systems, Inc. All rights reserved. (fcsh) private function startShell():void { fcsh = new NativeProcess(); fcsh.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onStandardOutput); fcsh.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onStandardError); fcsh.addEventListener(NativeProcessExitEvent.EXIT, shellExit); shellInfo.executable = new File("F:\\sdk\\bin\\fcsh.exe"); shellInfo.workingDirectory = new File("F:\\"); fcsh.start(shellInfo); var input:IDataOutput = fcsh.standardInput; input.writeUTFBytes("mxmlc -file-specs Script.as -o Script.swf debug=true -static-link-runtime-shared-libraries=true"); } private function onStandardOutput(e:ProgressEvent):void { if (!fcsh) return; var output:IDataInput = fcsh.standardOutput; var data:String = output.readUTFBytes(output.bytesAvailable); trace(data); } |
|
|||||
В доке адобовской совсем по другому передаются параметры:
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); var file:File = File.applicationDirectory.resolvePath("test.py"); nativeProcessStartupInfo.executable = file; var processArgs:Vector.<String> = new Vector.<String>(); processArgs[0] = "foo"; nativeProcessStartupInfo.arguments = processArgs; process = new NativeProcess(); process.start(nativeProcessStartupInfo); |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
fcsh ожидает перенос строки для начала выполнения команды
input.writeUTFBytes("mxmlc -file-specs Script.as -o Script.swf debug=true -static-link-runtime-shared-libraries=true\n"); 1. Для чтения output в Windows используй output.readMultiByte(output.bytesAvailable, "windows-1251"); 2. Для стабильной работы нужно сначала дождаться в output ответа "(fcsh) " и только потом писать в input 3. Так как fcsh.exe,mxmlc.exe,compc.exe требуют java x86, при наличии в системе только java x64 будет ошибка, вместо этого нужно использовать java.exe -jar lib/fcsh.jar 4. Eсли нужно скомпилировать вызывай нужный компилятор java.exe -jar lib/mxmlc.jar а не Shell обертку fcsh 5. Не используй Air для build tool, для этого есть специализированные инструменты ant, gradle, maven, bash, cmd, Python или java для нетривиальных задач Последний раз редактировалось Nooob; 28.12.2016 в 05:37. |
|
|||||
Регистрация: Jul 2014
Сообщений: 42
|
Спасибо за развёрнутые ответы.
Nooob, у меня центральное ядро, которое работает с исходниками, управляет swc и прочим, обращается по LocalConnection к SDKMediator'у(рабочее название) - AdobeAir-приложению, содержащему в себе функции fcsh, adt, adl. Смысл понятен из названия. Все эти танцы с бубном для того, чтобы компилятор был максимально отделён. Если он упадёт или перестанет отвечать, то основное приложение его просто перезапустит. Я понимаю, конечно, что я могу это утилитное приложение написать и на java, но особой разницы не вижу. Да и связь между модулями придётся делать иначе |
Часовой пояс GMT +4, время: 10:29. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|