Фреймворк Three20 и сборка с профилем AppStore Distribution

By | July 24, 2012

snimok_ekrana_2012-07-24_v_7.59.42

Столкнулся с неожиданной проблемой, при попытке собрать приложение для AppStore. Начну с того, что сам фреймворк подключается к проекту достаточно просто, если следовать инструкции, однако, инструкция эта (вместе со скриптом автоматической настройки проекта) написана явно не под Xcode 4.x, т.к. есть принципиальные различия. Итак, вы все сделали по инструкции, но при попытке запустить Build вылетают ошибки из серии TTThumbsViewController.h not found? Смело отправляйтесь в настройки проекта, в Build Settings и выставляйте там Always Search User Paths = Yes и User Header Search Paths:

  • $(BUILT_PRODUCTS_DIR)/three20
  • $(BUILT_PRODUCTS_DIR)/../three20

Эти два каталога должны быть включены без рекурсии, т.к. в своих классах Three20 использует относительные пути к подмодулям!

В итоге должно получиться, как на скриншоте:
snimok_ekrana_2012-07-24_v_8.00.20

После этих изменений ваше приложение начнет успешно собираться с профилем Debug, однако, когда попытаетесь создать сборку с профилем AppStore Distribution, будет ждать сюрприз – опять та же ошибка про не найденный header-файл. Возился долго, прежде чем нашел простую и глупую причину – дело в том, что при этой сборке в $(BUILT_PRODUCTS_DIR) подставляется путь build/Distribution AppStore-iphoneos/… с пробелом, что и вызывает проблемы. Чтобы таки поправить это дело, надо взять в кавычки все, что мы добавляли в User Header Search Paths, напирмер так “$(BUILT_PRODUCTS_DIR)/three20”.