Apache flex 在flex air应用程序中轻松处理developerNT/production URL
在flex air应用程序中处理developerNT/production URL的简单方法?我想指向我的本地框进行测试,但启动时我希望它自动指向生产URL。我建议使用配置文件或更改主机文件,将域指向开发计算机上的本地主机或开发服务器。使用后一个选项,您总是在代码中使用生产URL,但是您的开发机器将把这些域解析到您的本地机器,因为它首先检查主机文件。您可以使用名称空间并在编译器选项中配置当前名称空间(dev/RELEASE)Apache flex 在flex air应用程序中轻松处理developerNT/production URL,apache-flex,air,Apache Flex,Air,在flex air应用程序中处理developerNT/production URL的简单方法?我想指向我的本地框进行测试,但启动时我希望它自动指向生产URL。我建议使用配置文件或更改主机文件,将域指向开发计算机上的本地主机或开发服务器。使用后一个选项,您总是在代码中使用生产URL,但是您的开发机器将把这些域解析到您的本地机器,因为它首先检查主机文件。您可以使用名称空间并在编译器选项中配置当前名称空间(dev/RELEASE) CONFIG::release public function co
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
这里最好的方法是将这些信息外部化到一个配置文件(可能是一个XML文件)中,该文件通过一个相对url加载。配置文件可能如下所示:
<config>
<serviceEndpoint>http://www.mydomain.com/services</serviceEndpoint>
</config>
http://www.mydomain.com/services
请确保使用有效的ActionScript变量名命名XML元素,否则您可能会遇到使用该文件的困难(例如,E4X表达式可能会变得困难)
然后,您可以使用HTTPService加载“config.xml”,它在部署时放在应用程序的SWF旁边。这将允许您将托管在任何域上的SWF重新指向托管在任何其他地方的后端。如果您在本地开发并连接到共享开发服务器,这一点尤其有用
将这些信息编译到SWF中是非常不灵活的,也是一种糟糕的做法。我通常会查看应用程序(Flex--)或根显示对象(Flash--)中
contentLoaderInfo
对象中的url
。如果url以“file”开头,您就知道您正在开发/IDE,如果它是“http”,它正在浏览器中运行。如果您只是在浏览器中工作,您还可以向具有以下内容的对象传递参数
{
url: $_SERVER['SERVER_NAME'];
}
并执行一些init/startup方法,根据应用程序运行的路径进行切换。我正在编写的一个AIR应用程序中遇到了这个问题,该应用程序通过WebORB访问Rails应用程序 我只需要在和之间切换,这取决于我是否在Flex Builder中运行(通过adl) 这就是我最终使用的:
if (NativeApplication.nativeApplication.publisherID != "") {
return "http://fakeproductionurl.com";
}
else {
return "http://localhost";
}
它不能让您在3+个不同的环境之间切换,但它是在开发/生产环境之间切换的一种非常简单的方法。非常讨厌一个完全可行的解决方案!