本机进程不';t在编译的.air文件上启动;通过adl运行时工作正常 工作代码:
在开发中的AIR项目上运行本机进程不';t在编译的.air文件上启动;通过adl运行时工作正常 工作代码:,air,air-native-extension,Air,Air Native Extension,在开发中的AIR项目上运行adl application.xml时,我的本机进程可以使用以下代码正常工作: var os = air.Capabilities.os.toLowerCase(); if(os.indexOf('win') >= 0) var exe = 'win/myExecutable.exe'; else if(os.indexOf('mac') >= 0) var exe = 'mac/myExecutable'; else if(os.inde
adl application.xml
时,我的本机进程可以使用以下代码正常工作:
var os = air.Capabilities.os.toLowerCase();
if(os.indexOf('win') >= 0)
var exe = 'win/myExecutable.exe';
else if(os.indexOf('mac') >= 0)
var exe = 'mac/myExecutable';
else if(os.indexOf('linux') >= 0)
var exe = 'nix/myExecutable';
var file = air.File.applicationDirectory.resolvePath('res/somepath/' + exe);
var args = new air.Vector["<String>"]();
args.push('anArgument');
args.push('another');
var info = new air.NativeProcessStartupInfo();
info.executable = file;
info.arguments = args;
var process = new air.NativeProcess();
process.start(info);
process.closeInput();
问题:
将我的应用程序编译成.air
文件后,可执行文件无法启动
调试:
将名为debug
的空文件添加到C:\ProgramFiles(x86)\My App\My App\META-INF\AIR
,并将名为mm.cfg
的文件添加到%USERPROFILE%
中时,如下所示:
ErrorReportingEnable=1
MaxWarnings=1000
SuppressDebuggerExceptionDialogs=1
TraceOutputFileEnable=1
以下输出被写入%USERPROFILE%\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txt
:
错误:错误#3219:无法启动NativeProcess。'当前配置文件中不支持“”
如何解决此问题?先决条件:
Adobe网站上的文章指出:
使用本机应用程序安装程序安装的应用程序称为扩展桌面配置文件应用程序
它继续说:
创建本机安装程序以分发AIR应用程序时,该应用程序将获得以下功能:
- 它可以使用
类启动本机进程并与之交互NativeProcess
.air
文件必须编译为本机安装程序(即.exe
、.dmg
、.deb
或.rpm
文件),以便使用本机进程(以及其他一些东西)
要执行此操作,请安装AIR SDK(有关如何执行此操作的信息,请参阅我的另一个答案,),并在命令提示符下运行此命令:
adt -package -target native "Output file.exe" "Input file.air"
您生成的安装程序(内置AIR运行时)现在可以完美地与进程配合使用
关于交叉兼容性的最后一句话:
您必须在与要生成的本机安装程序文件相同的操作系统上使用ADT。因此,要为Windows创建EXE文件,请在Windows上运行ADT。要为Mac OS创建DMG文件,请在Mac OS上运行ADT。要为Linux创建DEB或RPG1文件,请在Linux上从AIR 2.6 SDK运行ADT
一,。这是Adobe方面的错误,应该读RPM,而不是RPG
如果希望某个文件在已安装的应用程序中是可执行的,请确保在打包应用程序时该文件在文件系统中是可执行的。(在Mac和Linux上,如果需要,可以使用chmod设置可执行标志。)
adt -package -target native "Output file.exe" "Input file.air"