1

我有一个小问题..我知道有一个解决办法,我只是不知道它是什么。

问题如下。几周前(大约 2 个)由于服务器端的数据问题,我不得不从应用商店中删除 4 个应用。我决定将所有应用程序升级到最新版本,同时为它们提供一些新功能。(我有 6 个相同的应用程序,针对不同的机场)。这些版本之间的区别如下:

  • 一组 50-80 张左右的图像,结合了每个机场的地图。每个应用程序中的文件名相同。(我该如何解决?)
  • 应用程序的名称
  • Default.png(当然还有那些用于 iPad 和 Retina 的)
  • 应用程序图标
  • 详细信息页面的内容(存在于 .plist 文件中)
  • “关于”页面的内容,其中页面引用回应用程序
  • 一些本地化内容,参考应用程序目标的机场。
  • 当然,配置文件。

跟踪这些事情只是一件麻烦事,所以我想要 1 个项目和 1 个代码库,只需添加图像和细节(如上所述),新版本就会出现。当我“存档”时,我希望构建所有应用程序并准备好发送给苹果(我必须手动完成)。

我怎样才能做到这一点?

4

2 回答 2

2

在使用多个目标和条件编译之前,我已经这样做了。每个可交付成果需要一个目标。您可以以通常的方式为每个目标配置名称、图标等。

一组 50-80 张左右的图像,结合了每个机场的地图。每个应用程序中的文件名相同。(我该如何解决?)

将图像保存在不同的目录中,并为每个目标仅添加该应用程序的图像。如果您可以从文件中加载内容,此技术也适用于 about 页面的内容。


我还使用条件编译,以便我可以为每个应用程序的常量定义不同的值。

为此,将设置添加到其他 C 标志和其他 C++ 标志以识别您的应用程序。就像是:

-DAPP_VARIANT=1

然后,在您的代码中,您可以使用以下内容来实现任何特定于应用程序的行为:

- (id)init
{
#if APP_VARIANT == 1
    self->server_url = [[NSURL URLWithString:@"http://app1.example.com"] retain];
#elif APP_VARIANT == 2
    self->server_url = [[NSURL URLWithString:@"http://app2.example.com"] retain];
#endif
}
于 2012-04-16T21:31:31.280 回答
0

你不能对所有主要代码使用一个版本控制分支,然后在你填写数据的地方分叉六次(每个机场一次)吗?进行新的代码更改后,只需将更改从主分支推送到分支即可。

于 2012-04-16T19:08:20.263 回答