Как создать бесплатную версию из платной версии без дублирования проекта Xcode 4?

Я слышал слухи о том, что можно создавать различные варианты приложения без дублирования проектов Xcode, используя цели и инструкции условной компиляции, такие как

IF !FREE_VERSION 
[self loadGreatFeature];
ELSE
[self loadBoringFeature];

Итак:

  • Как установить Xcode 4, чтобы иметь возможность отличать создание/архивирование бесплатной или платной версии проекта?

  • Как сообщить Xcode 4 включить определенный набор изображений и других ресурсов в платной версии, но не в бесплатную версию (и наоборот)?

  • Как сообщить Xcode 4 о создании бесплатной или платной версии? (не хотят строить их обоих все время, так как это замедлит развитие)

  • Каковы предостережения этого подхода?

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

Ответ 1

Откройте проект в Xcode и выберите элемент верхнего уровня в Навигаторе проектов. Вы должны увидеть список целей для своего проекта.

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

Выберите новую цель. На вкладке Сборка фаз вы можете контролировать, какие исходные файлы будут созданы как часть этой цели и какие ресурсы будут скопированы для нее. На вкладке Настройки сборки найдите макросы препроцессора и добавьте новый, например MYAPPLITE = 1, для всех конфигураций сборки. Затем вы можете сделать условную компиляцию в своем коде с чем-то вроде:

#ifdef MYAPPLITE
    [self loadBoringFeature];
#else
    [self loadGreatFeature];
#endif

Наконец, выберите Изменить схему... в меню "Продукт". Для вашей новой цели уже должна быть создана новая схема. Вы можете переименовать его в листе "Управление схемами", если хотите. Вы можете управлять конкретными настройками для создания, запуска, архивирования и т.д. Здесь новой цели.

Для переключения между созданием бесплатной версии или платной версии вы просто меняете активную схему.

Единственное реальное предупреждение - вам нужно постоянно обновлять настройки для своей новой цели.