6

我们有一个希望跨多个设备部署的程序。

  • 独立俘虏 AIR
  • 基于网络的 Flash 应用程序
  • iOS 应用
  • 安卓应用

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

4

4 回答 4

3

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

于 2012-05-15T11:34:32.940 回答
2

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

于 2012-05-21T14:34:03.540 回答
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

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

于 2013-10-07T14:59:14.927 回答
0

如果您使用 git 进行版本控制,请查看子模块。我用它把所有东西都保存在一个项目中,但是分别对每个模块进行版本控制,它产生了一个很好的解决方案。

于 2013-10-07T15:20:18.080 回答