我正在创建一个通用的应用程序,它将为不同的客户提供不同的构建.该应用程序每个客户的相同程度为99.5%,每个客户的区别在于客户自己的特定图像和文字和应用程序图标.
显然这可以使用以下标志来完成:
#if defined (CUSTOMER_A) NSString* text = @"Text for customer A"; UIImage *image = [UIImage imageNamed:@"customerAImage"]; #elseif defined (CUSTOMER_B) NSString* text = @"Text for customer B"; UIImage *image = [UIImage imageNamed:@"customerBImage"];
但显然我想避免这种情况,只是有:
NSString* text = @"Text"; UIImage *image = [UIImage imageNamed:@"image"];
(文本将是可本地化的,因此在最终版本中将使用NSLocalizedString).
我想知道一个可能的方法是将项目放入工作区以及许多静态库,每个静态库都包含每个客户的特定文本和图像,然后使用不同的方案来创建不同的构建.所以方案A将创建一个使用主项目和静态库A构建的目标.
我开始有一个小的概念证明,但是在走得太远之前,我首先要检查这是一个可行和合理的方法,或者如果有更好的选择.如果可行的话可以考虑几个问题:
>如何从主项目中的代码访问静态库中的图像?必须创建一个bundle来访问库的内容,这样做如何?
>根据使用哪种方案,是否可以更改应用程序桌面和市场图标?
>是否可以指定一套不同的分配证书等待每个方案使用?
静态库不能包含本地化的变体吗?
这是为了iOS,所以不可能为此使用一个框架.
感谢任何反馈.
(建筑系统将使用jenkins自动化).