我目前正在将一个现有的iOS应用程序改编成一组非常相似的应用程序(每个应用程序实例可能映射到不同的国家/地区)。
我计划为这些实例中的每一个都设置一个不同的构建目标,它们之间唯一的区别应该是:
- 图像(可能只是启动画面和图标) - 本地化 - 字符串变量:远程服务的基本URL、应用程序ID、支持电子邮件等(可能有一些这样的变量)
代码本身在所有应用程序中应该是相同的。
我想知道你认为管理这样一组应用程序的最佳做法是什么。
关于图像和本地化(或资源总体),它应该只是添加/删除目标中的适当文件的问题(我想我甚至可以在不同的目录中使用相同的图像名称)。
我不确定的主要事情是其他配置变量。
我听说/想到了一些选择:
- 使用预处理器宏和一个带有不同URL、ID等的主配置头文件。 - 每当应用程序启动时从plist(或类似的配置文件)中加载它们,并为每个目标设置一个这样的文件。 - 创建一个空的.sqlite文件(此应用程序已经使用Core Data),并使用默认配置变量填充它,并为每个目标设置一个这样的文件。
我认为第一个选项一旦我有几个此应用程序实例,就会最快失控,而且每次更改这些设置时都必须重新编译。
第三个选项我也不确定,因为我将向我的数据库添加不属于其中的实体,而且它似乎有点过度设计,因为它可能只涉及5-10个设置。我还不确定如何在更新时添加新设置。
所以我更倾向于第二个选项。
你有什么想法?这些有没有其他选择?
关于第二个选项,缺点是那些字符串(ID、URL等)会比它们在源代码中更暴露(即如果有人打开应用程序并浏览plist),但这并不是很大的问题,只是需要考虑一下。
第二个更新:
如何直接使用应用程序的info.plist并在那里存储它?(因此为每个目标配置都有一个info.plist)尽管最初我想要一个单独的plist,并且有一个“配置单例”,它会在启动时从那里加载所有内容,但我认为将其放在info.plist中然后通过[[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.example.mykey1"]读取可能更简单。
我计划为这些实例中的每一个都设置一个不同的构建目标,它们之间唯一的区别应该是:
- 图像(可能只是启动画面和图标) - 本地化 - 字符串变量:远程服务的基本URL、应用程序ID、支持电子邮件等(可能有一些这样的变量)
代码本身在所有应用程序中应该是相同的。
我想知道你认为管理这样一组应用程序的最佳做法是什么。
关于图像和本地化(或资源总体),它应该只是添加/删除目标中的适当文件的问题(我想我甚至可以在不同的目录中使用相同的图像名称)。
我不确定的主要事情是其他配置变量。
我听说/想到了一些选择:
- 使用预处理器宏和一个带有不同URL、ID等的主配置头文件。 - 每当应用程序启动时从plist(或类似的配置文件)中加载它们,并为每个目标设置一个这样的文件。 - 创建一个空的.sqlite文件(此应用程序已经使用Core Data),并使用默认配置变量填充它,并为每个目标设置一个这样的文件。
我认为第一个选项一旦我有几个此应用程序实例,就会最快失控,而且每次更改这些设置时都必须重新编译。
第三个选项我也不确定,因为我将向我的数据库添加不属于其中的实体,而且它似乎有点过度设计,因为它可能只涉及5-10个设置。我还不确定如何在更新时添加新设置。
所以我更倾向于第二个选项。
你有什么想法?这些有没有其他选择?
关于第二个选项,缺点是那些字符串(ID、URL等)会比它们在源代码中更暴露(即如果有人打开应用程序并浏览plist),但这并不是很大的问题,只是需要考虑一下。
第二个更新:
如何直接使用应用程序的info.plist并在那里存储它?(因此为每个目标配置都有一个info.plist)尽管最初我想要一个单独的plist,并且有一个“配置单例”,它会在启动时从那里加载所有内容,但我认为将其放在info.plist中然后通过[[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.example.mykey1"]读取可能更简单。