Управление проектом Xcode: один движок - разные персонализированные приложения - PullRequest
9 голосов
/ 03 февраля 2011

Идея состоит в том, что у меня есть приложение template , которое должно быть настроено для разных клиентов. Основная цель - предоставить ряд персонализированных приложений с практически одинаковыми функциями.

Каков наилучший подход к организации проекта Xcode (и, возможно, к управлению), чтобы получить следующие баллы для каждого клиентского приложения:

  1. Всегда устанавливаются разные изображения для визуальных элементов (для элементов управления, видов, значков и т. Д.);
  2. Редко разные файлы XIB для небольшого изменения структуры пользовательского интерфейса;
  3. Визуальные настройки - уровень кода;
  4. Небольшие функциональные модификации;
  5. Возможность вернуться к предыдущим персонализированным версиям;
  6. Один функциональный движок (например, функциональность поиска);

На данный момент для каждого запроса персонализации я создаю в том же корневом каталоге проекта новый файл проекта и соответствующие файлы XIB , набор изображений и исходных файлов (для некоторых функциональных запросов) каталогов. Каждый файл проекта имеет ссылку на каталог основных исходных файлов (механизм).

Но я полагаю, что это не лучший способ организации проектов такого типа.

Ответы [ 6 ]

10 голосов
/ 07 февраля 2011

Я бы, вероятно, решил сделать это с помощью контроля версий и сохранить отдельные ветви для каждой настроенной версии.Таким образом, master / trunk может быть вашим ненастроенным кодом.

Когда вам нужно создать настроенную версию, просто создайте другую ветвь.Если ваше основное приложение нуждается в изменении, объединение изменений из ствола в ветви должно быть простым, и это дает вам преимущество, заключающееся в том, что все настроенные код / ​​файлы хранятся отдельно.

Я не знаю, насколько это легкобудет вписываться в ваш рабочий процесс, но я думаю, что это помечает все флажки, в том числе возможность вернуться к предыдущим версиям.

2 голосов
/ 10 февраля 2011

Создайте статическую библиотеку со всеми вашими базовыми функциями. Тогда каждый проект может ссылаться на эту статическую библиотеку. Это означает, что если вы нашли ошибку, вам нужно только исправить ее один раз и просто перестроить все клиентские программы.

2 голосов
/ 07 февраля 2011

создать шаблон проекта - или просто zip-файл с шаблоном.

сначала определите, где вы можете использовать (что-то вроде) xml defs вместо переопределения и других изменений уровня источника.

Всегда устанавливаются разные изображения для визуальных элементов (для элементов управления, видов, значков и т. Д.);

добавить ресурсы-заполнители в шаблон проекта

Редко разные файлы XIB для небольшого изменения структуры пользовательского интерфейса

добавить его в проект, ссылаясь на изменения (если они изменились) через vc

Визуальные настройки - уровень кода;

основных библиотек, общих для всех проектов. рассмотрите возможность использования c или c ++, если библиотека будет большой. объект не может быть удален. он содержит заглушки реализации, а также общий код, базовые классы и интерфейсы.

Небольшие функциональные модификации

расширяет интерфейс ваших основных классов, так что подклассы могут легко реализовывать частые изменения. эти файлы являются частью шаблона.

Возможность возврата к предыдущим персонализированным версиям;

это должно быть в vc, и версии зависимостей также должны отслеживаться.

Один функциональный движок (например, функция поиска);

неопределенная фабричная функция достаточно проста:

id<MONSearchEngineProtocol> MONAppCoreCreateSearchEngine();

объявить его в статической библиотеке, но определить (и реализовать то, что необходимо) в одном из конкретных источников проекта. Вы можете добавить это в других местах - некоторые люди добавят его в контроллер приложения и переопределят.

если у вас есть много таких для управления, рассмотрите возможность перемещения ваших ресурсов в код (вместо того, чтобы управлять кучей перьев). nib определяет много кода, который представляет собой практически дублированный код для управления. для некоторых ресурсов это будет иметь смысл, а для других - не очень.

1 голос
/ 09 февраля 2011

Вы можете сделать много управления контентом, используя XML для предоставления контента.ех.Если вы хотите, чтобы изображение отличалось от графики для ipad или ipad, вы можете создать тег примерно так:

<MyLogo logoID="0">
<ipad image="someImage2X" height="50" width="50" position="100, 100"/>
<iphone image="someImage2" height="50" width="50" position="100, 100"/>
</MyLogo>

А затем, конечно, создайте парсер для xml.Это позволяет создавать множество разных продуктов одного типа с разным контентом.

Также проверьте устройство / контент, над которым вы работаете, а затем выполните синтаксический анализатор, чтобы исправить тег для ваших потребностей.может создавать различные атрибуты xml для разных эффектов, если вы реализовали базовую функциональность для этого эффекта.

Счастливое кодирование

1 голос
/ 03 февраля 2011

Использовать цели XCode. Вы можете указать различные ресурсы и / или исходные файлы для включения в одну цель.

Если вы хотите иметь несколько настроек кода в одном файле, определите макрос-компилятор для каждой цели и используйте #ifdef MY_MACRO, чтобы включить код для этой конкретной цели.

0 голосов
/ 08 февраля 2011

Для нескольких настроек кода в одном файле - Макросы компилятора (Определить и использовать).

Вы можете использовать цели X-Code, но я знаю, что это не очень поможет.

Я тоже начал над этим работать. : -)

Happy XCoding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...