Apache flex Flex和AIR之间的代码共享
如您所知,我们可以基于flex构建RIA应用程序。此外,我们还可以基于AIR构建一个桌面应用程序。我有一个问题,如果我们想同时构建web和桌面应用程序。我们是否可以使用相同的代码将产品发送到web和桌面?如果您为其设计应用程序,那么在Flex和AIR版本之间共享99%的代码库应该没有问题Apache flex Flex和AIR之间的代码共享,apache-flex,air,Apache Flex,Air,如您所知,我们可以基于flex构建RIA应用程序。此外,我们还可以基于AIR构建一个桌面应用程序。我有一个问题,如果我们想同时构建web和桌面应用程序。我们是否可以使用相同的代码将产品发送到web和桌面?如果您为其设计应用程序,那么在Flex和AIR版本之间共享99%的代码库应该没有问题 对于Flex/AIR版本,您需要一个单独的应用程序MXML,因为AIR使用的是WindowedApplication,而Flex使用的是应用程序 您将需要抽象您对任何纯AIR API的使用。也就是说,任何用A
- 对于Flex/AIR版本,您需要一个单独的应用程序MXML,因为AIR使用的是
,而Flex使用的是WindowedApplication
应用程序
- 您将需要抽象您对任何纯AIR API的使用。也就是说,任何用AIR only图标标记的类、属性或方法( )在。如果您使用的是依赖项注入容器,例如,您可能会发现这个过程更容易
- 或者,您可以将服务定义拆分为两个不同的源树。这将导致AIR项目和Flex项目共享一个源路径,但也有自己的源路径。这样,访问
的代码将在AIR和Flex之间共享,但com.application.MyService
的实现将因使用的“服务源路径”而异com.application.MyService
- 您可能会发现,使用编译器标志(如
)配置每个构建非常有用。这允许您使用条件编译,以便可以为两个版本编译相同的文件,但包括AIR版本的特定代码-define+=CONFIG::AIR
public function getMyService() : IMyService
{
CONIFG::AIR
{
return new MyServiceThatUsesAnAIROnlyAPI();
}
return new FallbackServiceForFlex();
}
不幸的是,没有办法“否定”条件标志(即,!CONFIG::AIR
),因此您需要对其使用进行明智的选择,或者包括两个标志(CONFIG::AIR
和CONFIG::FLEX
)是的,您可以这样做。
您必须在代码中控制某些条件
请记住,如果应用程序也是flex应用程序,那么它将是一个单窗口应用程序。
我为每个项目创建了3个项目
我很惊讶还没有人这么说,但我会这样做: