在flex air app中处理开发/生产URL的简便方法

时间:2009-05-14 20:15:20

标签: flex air

在flex air应用程序中处理开发/生产URL的简便方法?我想指向我的本地测试框,但是当我启动时,我希望它自动指向生产URL。

5 个答案:

答案 0 :(得分:0)

我建议使用配置文件或更改主机文件,将域指向开发计算机上的localhost或dev服务器。使用后一种选项,您始终在代码中使用生产URL,但您的开发机器会将这些域解析为本地计算机,因为它首先检查hosts文件。

答案 1 :(得分:0)

您可以在编译器选项中使用命名空间并配置当前命名空间(DEV / RELEASE)。

CONFIG::release
public function connect()
{
  //connect to release url
}

CONFIG::dev
public function connect()
{
   //connect to dev url
}

然后为编译器定义这些选项:

-define=CONFIG::release,false
-define=CONFIG::dev,true

答案 2 :(得分:0)

此处最好的方法是将此信息外部化为配置文件(可能是XML文件),该文件通过相对URL加载。配置文件可能看起来像这样:

<config>
    <serviceEndpoint>http://www.mydomain.com/services</serviceEndpoint>
</config>

确保使用有效的ActionScript变量名称命名XML元素,否则使用该文件可能会遇到一些困难(例如,E4X表达式可能会变得困难。

然后,您可以使用HTTPService加载“config.xml”,它在部署时与应用程序的SWF一起放置。这将允许您将托管在任何域上的SWF重新指定到其他任何位置托管的后端。如果您在本地开发并连接到共享开发服务器,这将非常有用。

将此信息编译到您的SWF中是非常不灵活的,也是一种糟糕的做法。

答案 3 :(得分:0)

我通常会在应用程序(Flex - http://livedocs.adobe.com/flex/201/langref/mx/core/Application.html#url)或根显示对象(Flash - http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#url)中查看url对象中的contentLoaderInfo 。如果网址以“file”开头,您知道自己在开发/ IDE中,如果它是“http”,则它在浏览器中运行。如果您只是在浏览器中工作,您也可以将参数传递给具有类似

的对象
{
    url: $_SERVER['SERVER_NAME'];
}

并执行一些init / startup方法,根据应用程序运行的路径进行切换。

答案 4 :(得分:0)

我在我写的AIR应用程序中遇到了这个问题,它通过WebORB点击Rails应用程序。

我只需要在http://localhosthttp://fakeproductionurl.com之间切换,具体取决于我是否在Flex Builder中运行(通过adl)。

这是我最终使用的:

if (NativeApplication.nativeApplication.publisherID != "") {
   return "http://fakeproductionurl.com";
}
else {
   return "http://localhost";
}

它不能让您在3种以上的不同环境之间切换,但它是在开发/生产环境之间切换的一种非常简单的方法。