Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2016, 14:45
DEVORON вне форума Посмотреть профиль Отправить личное сообщение для DEVORON Найти все сообщения от DEVORON
  № 1  
Ответить с цитированием
DEVORON

Регистрация: 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)


Код AS3:
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);
 
}

Старый 27.12.2016, 01:20
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 2  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
В доке адобовской совсем по другому передаются параметры:

Код AS3:
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);

Старый 28.12.2016, 04:57
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 3  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
fcsh ожидает перенос строки для начала выполнения команды
Код AS3:
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.
Старый 10.01.2017, 21:48
DEVORON вне форума Посмотреть профиль Отправить личное сообщение для DEVORON Найти все сообщения от DEVORON
  № 4  
Ответить с цитированием
DEVORON

Регистрация: Jul 2014
Сообщений: 42
Спасибо за развёрнутые ответы.
Nooob, у меня центральное ядро, которое работает с исходниками, управляет swc и прочим, обращается по LocalConnection к SDKMediator'у(рабочее название) - AdobeAir-приложению, содержащему в себе функции fcsh, adt, adl. Смысл понятен из названия. Все эти танцы с бубном для того, чтобы компилятор был максимально отделён. Если он упадёт или перестанет отвечать, то основное приложение его просто перезапустит.

Я понимаю, конечно, что я могу это утилитное приложение написать и на java, но особой разницы не вижу. Да и связь между модулями придётся делать иначе

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.