Я создаю универсальное приложение, которое будет иметь разные сборки для разных клиентов. Приложение на 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, поэтому невозможно использовать фреймворк для этого.
Спасибо за любую обратную связь.
(P.S. система сборки будет автоматизирована с использованием Jenkins).