多个项目共享一个源码

6
我们有一个程序,希望在多个设备上部署。
  • 独立的Captive AIR
  • 基于Web的Flash应用
  • iOS应用
  • Android应用
除了一些UI内容外,大部分代码都是相同的。我想知道最佳方法是什么。我们应该有一个共享库项目,还是一个大项目,并通过ant或其他方法控制不同的编译器设置?
4个回答

3

使用和访问共享库项目是跨平台项目实现的最佳方式。除此之外,您还可以使用ant Build。


我认为这是最好的解决方案。 - Dale Fraser

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

1
我们在一项大规模的移动端/网页项目中采用了以下组合方法,目前已经存在于 IOS AppStore,并将很快在 Android 和 Web 上发布:
  • 一个主要项目,使用编译器指令处理特定平台逻辑和元素
  • 编译器指令,处理主项目代码库中的特定平台逻辑
  • 一个独立的 视频和交互引擎 项目,大部分是平台无关的,使用 switch 语句处理平台特定逻辑
  • 一个共享的 SWC 图形资产。平台特定元素以平台和下划线为前缀。使用编译器指令指定哪些 movieclips 显示在屏幕上
  • 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.

我目前遇到了一个问题,如果有人有兴趣跟踪该项目,很快就会发布详细信息的问题。该项目的设置在项目首页显示的ReadMe文件中已经描述得相当清楚。


0
如果您使用Git进行版本控制,请看一下子模块。我用它来将所有内容保留在一个项目中,但是分别对每个模块进行版本控制,这导致了一个很好的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接