Ios 将一个应用程序划分为多个具有不同UI设计和共享逻辑代码的应用程序

Ios 将一个应用程序划分为多个具有不同UI设计和共享逻辑代码的应用程序,ios,iphone,ios7,workspace,nested,Ios,Iphone,Ios7,Workspace,Nested,我有一个应用程序,我会称之为“基础应用程序”。该应用程序适用于许多品牌。 我现在需要将这些品牌分开,并为每个品牌制作一个不同的应用程序。 每个应用都会有一个稍微不同的设计(包括不同的图像),这里和那里可能会有一些特定的品牌代码。 所有应用程序也应该使用“基本应用程序”中处理逻辑的相同基本代码 我有一些选择,我想,但我不确定是否有任何适合我的需要。我很乐意澄清这些选项之间的差异 我想到的选择是: 1) 为每个品牌创建一个应用程序,只需复制粘贴“基本应用程序”中的类文件作为参考,但.xib文件除外,

我有一个应用程序,我会称之为“基础应用程序”。该应用程序适用于许多品牌。 我现在需要将这些品牌分开,并为每个品牌制作一个不同的应用程序。 每个应用都会有一个稍微不同的设计(包括不同的图像),这里和那里可能会有一些特定的品牌代码。 所有应用程序也应该使用“基本应用程序”中处理逻辑的相同基本代码

我有一些选择,我想,但我不确定是否有任何适合我的需要。我很乐意澄清这些选项之间的差异

我想到的选择是:

1) 为每个品牌创建一个应用程序,只需复制粘贴“基本应用程序”中的类文件作为参考,但.xib文件除外,它将作为副本复制。问题是,我不知道如何以及在哪里编写特定于品牌的代码(因为它将在其他人之间共享)

2) 创建一个工作区,其中包括每个品牌的项目。不知道这是如何工作的,如果这是正确的,将很高兴在这里帮助澄清

3) 在每个品牌的项目中嵌套一个“基础应用程序”项目。任何澄清其作用的帮助都将不胜感激

3) 将基础应用程序用作静态库,链接到每个品牌的项目中。不确定UI会发生什么(共享、非共享)。我也很高兴能在这里得到帮助


4) 使用一种简单的方法来维护品牌的每一个项目,包括共享代码(我想这将是一场灾难)。

在创建便宜的flash游戏或应用程序时,你经常会遇到这种情况

这些都有非常通用的框架,比如:踢球、射击屏幕,或者用从特定服务器下载的数据生成列表等等

每次他们想要创建一个新的射击游戏,他们只需加载他们的射击框架,添加一堆图形,就可以在一天内发布一个糟糕的游戏

他们是怎么做到的

他们通常创建一个包含共享模型、处理程序、接口等的框架。 在库中放置许多通用实用功能,如下载文件等。 您还可以创建一些默认的框架视图和视图控制器

当您想要创建类似的应用程序时,只需导入库并重新使用基本框架。包含基本视图、基本模型等

您可以在ios SDK或android SDK附带的演示示例中找到一个很好的示例


祝你好运。

一个好方法是将你的应用程序拆分为以下组件:

  • 核心模型库
  • 可重用视图和视图控制器。视图可以设计为支持蒙皮和自定义
  • 可以封装为自己的“标识”的任何其他可重用代码
理想情况下,这些核心项目应该有自己的持续集成(质量控制)构建和测试

然后使用CoocaPods

不要手动执行所有这些复杂的集成,而是使用。CocoaPods将创建Xcode工作区,构建库并将它们链接到您的项目中。然后,只需将各个部分粘合在一起,即可创建自定义构建

除此之外,CocoaPods还执行以下任务:

  • 解决可传递依赖关系-这只意味着构建和获取库本身使用的任何库
  • 管理要集成的库的版本
私有规范回购是可能的,或者只使用GitHub

CocoaPods的主要存储库当然是公共的,包含开源和/或免费提供的库

您可以托管自己的CocoaPods规范存储库,或者只需设置一个私有GitHub帐户,并在每个项目中包含一个PodSpec,然后按如下方式解决:

pod 'MyLibraryName', :git => 'https://github.com/myOrgName/MyLibrary.git'
这将把所有库安装到工作区中。要更新项目以包含对核心库的任何更改,只需执行以下操作:

pod update
此方法的优点

  • 您将有一组单独的质量控制,应用于每个核心项目
  • 声誉会大大降低
  • 你可以使用更多的自动化。自动化程度越高,浪费越少,客户价值越高
  • 随着团队的发展,您可以将核心产品开发和解决方案集成拆分为单独的角色/团队。开发集成构建的团队不需要提取最新的库功能,如果这会破坏它们
  • 您可以在核心库的不同版本上拥有两个不同的客户。CocoaPods将无缝地管理这一点。因此,在收到增强请求或定期维护之前,您不必更新构建。(再次减少浪费,从而增加客户价值)
灵感来源于Piggly Wiggly(但身体始终倾斜)


这种方法模仿二战后在日本流行的生产线式方法。它被称为精益方法论,其核心是快速、小库存和减少浪费。(用更少的资源交付更多的产品)。日本的高管们在去美国参观Piggly Wiggly超市商店时得到了灵感

iOS中的简单解决方案是使用目标

对于资源,您可以为每个品牌使用不同的目标,然后为每个目标选择不同的资源(图像、XIB等)

此外,如果代码中的更改很少,那么您可以重构代码的某些部分,并为每个目标创建具有不同实现的不同类(您可以使用类似工厂的模式)。也可以简单地使用预处理器宏

这不是更好的方法,但这是最简单、最快捷的方法,但如果代码发生了很大变化,最好像其他答案所说的那样创建一个核心库。

Amy Worr