多个项目一个来源

时间:2012-05-15 11:31:14

标签: android ios flash air flash-builder

我们希望在多个设备上部署一个程序。

  • Standalone Captive AIR
  • 基于网络的Flash应用
  • iOS应用
  • Android应用

除了一些UI内容以外的代码在很多部分都是相同的。我想知道什么是最好的方法。我们应该有一个共享的库项目,还是应该有一个大型项目,通过ant或其他方法控制不同的编译器设置。

4 个答案:

答案 0 :(得分:3)

访问和使用共享库项目是跨平台项目实施的最佳方式。除了这种方法,你可以使用ant Build。

答案 1 :(得分:2)

答案通常与“UI内容”有很大关系,但是因为它听起来像是Flash / AIR,所以这可能不是一个大问题。如果是我,我会选择“一个大项目”的方法,并获得一个与我的IDE兼容的严格的CI / NI和SCM套件。如果您使用Eclipse / Aptana,我喜欢Husdon / Surround。 (完全披露:我曾经工作@ Seapine。)如果你不使用Eclipse,你应该查看与你的IDE集成的CI / SCM选项(和他们自己;例如,Hudson有一个Surround模块,反之亦然) 。共享库的功能是可行的,但由于Flash在任何地方都是Flash,我不认为需要增加单独项目的划分。功能齐全的CI可以非常有效地管理编译器差异。

答案 2 :(得分:1)

我们正在将此方法组合用于目前存在于IOS AppStore中的大型移动/网络项目,并将很快在Android和网络上发布:

  • 一个主项目,它使用编译器指令来处理特定的平台逻辑和元素
  • 编译器指令,用于处理主项目代码库中的特定平台逻辑
  • 我们的视频和互动引擎的单独项目,主要是平台无关的,使用特定于平台的逻辑的switch语句
  • 图形资产的一个共享 SWC 。平台特定元素以平台和下划线为前缀。编译器指令用于指定在屏幕上显示哪些动画片段
  • Ant脚本为各种平台进行编译
  • 原生扩展程序与硬件特定功能的接口

我们使用一些商业,一些开源和一些自制的ANE,用于AppStore集成,社交媒体功能,网络监控,通知和应用间通信等。

  • com.adobe.extension.NetworkInfo.ane
  • com.milkmangames.extensions.EasyPush.ane
  • com.milkmangames.extensions.GoViral.ane
  • com.milkmangames.extensions.StoreKit.ane

(我与milkmangames没有任何关系)

我目前正在编写Android ANE来处理使用Intents的应用间通信。这是一个我开源的项目:

<强> https://github.com/interactivenyc/ANESampleProject 即可。

我目前在那里遇到一个问题,如果有人有兴趣关注该项目,我会很快发布一个问题。在项目首页上显示的自述文件中对项目设置进行了很好的描述。

答案 3 :(得分:0)

如果您使用git进行版本控制,请查看子模块。我用它来保存一个项目中的所有内容,但是单独对每个模块进行版本控制,结果很好。