0

我有一个 Flash CC/AS3 文档,打算在 iOS 和 Android 平台上部署。

接下来我需要做的是将该应用程序与 Facebook 集成。我认为最合乎逻辑的方法是拥有一个类来处理所有 Facebook 交互内容并调用适当的方法,无论我们是为 Android 版 Air 还是 iOS 版 Air 编译。我认为这不会太难做到。

当我开始使用 Persistant Login 时,问题就出现了。要在 iOS 上完成此操作,我需要将 .ane 文件包含到我的 .fla 中。好的,所以此时我复制 .fla 并为 Android 设置 1 个,为 iOS 设置 1 个(这一直是计划)。

因此,在 iOS 应用程序中,我接下来必须import com.sbhave.openUrl.*;引用 .ane 文件。我希望我能够做类似的事情

try{
   import com.sbhave.openUrl.*;
}
catch(e){
   //Set some constant to let us know that we are on android
}

另一种选择(我认为)是对 iOS 进行所有更改,做一个差异并创建一个补丁,以便在构建时快速换入和换出 iOS 原生扩展。是否有人对我如何捕获失败的导入或根据 .ane 文件是否存在有条件地进行导入有任何建议。

谢谢

PS..

哦,是的,我忘了说这很重要的原因是 Air for iOS 无法在包含扩展的 PC 上运行,而且每次我需要测试时编译 + 安装都需要大量工作。

PPS..

此问题并非特定于 Facebook 持久登录,因为各种位都需要其他本机扩展。问题的重点是,AS3 代码是否可以根据 .FLA 中设置的参数有条件地包含头文件或处理不同的包含

4

1 回答 1

0

对于其他有类似问题的人,我已经通过执行以下操作解决了这个问题:我创建了一个编译时常量 CONFIG::iOS,我在 iOS 应用程序中将其设置为 true,在 Android 中设置为 False。

任何依赖于 3rdparty .ane 或 .swc 文件的代码都包含在一个块中,例如

CONFIG::iOS
{
  //iOS Specific
}

感谢http://divillysausages.com/blog/as3_conditional_compilation

于 2013-08-12T18:08:34.440 回答