我正在创建一个通用应用程序,它将为不同的客户提供不同的构建。该应用程序对于每个客户来说都是 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 构建的目标。
我从一个小的概念证明开始,但在走得太远之前,我首先想检查一下这是一种可行且合理的方法,或者是否有更好的选择。如果可行,那么会想到几个问题:
如何从主项目中的代码访问静态库中的图像?是否必须创建一个包才能访问库的内容,这是如何完成的?
是否可以根据使用的方案更改应用程序桌面和市场图标?
是否可以为每个方案指定一组不同的分发证书等?
静态库不能包含本地化变体是真的吗?
这适用于 iOS,因此不可能为此使用框架。
感谢您的任何反馈。
(PS 构建系统将使用 Jenkins 自动化)。