Three20 v1.1 и Xcode 4 - PullRequest
       30

Three20 v1.1 и Xcode 4

6 голосов
/ 16 марта 2011

Есть ли простой способ заставить Three20 v1.1 работать под xCode 4? Я следовал инструкциям на http://three20.info/article/2011-03-10-Xcode4-Support, но это похоже на мастера. Я использую v1.1, поскольку я использую TTLauncher.

Проект прекрасно работает с обычной сборкой и отлично работает на iPhone. Но когда я хочу создать архив (для IPA для распространения), я получаю 18 ошибок и 8 предупреждений.

Первый:

../scripts/Protect.command: line 23: cd: /Users/XXX/Library/Developer/Xcode/DerivedData/iDoms-cmyivarwxpbvqdfnyclqdrikrtmw/ArchiveIntermediates/iDoms/BuildProductsPath/Release-iphoneos/../three20/Three20UICommon: No such file or directory

Большинство других «нет такого файла или каталога», например: #import "Three20Core/TTGlobalCoreLocale.h "

или 'undeclared (первое использование функции)', который возникает из-за 'нет такой проблемы с файлом или каталогом, которую я предполагаю'.

В моих «путях поиска по заголовку» у меня есть:

$(BUILT_PRODUCTS_DIR)/../three20
$(BUILT_PRODUCTS_DIR)/../../three20
../../three20/Build/Products/three20
/usr/include/libxml2

Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

10 голосов
/ 18 июля 2011

Просто добавьте к ответу Колина: вы можете использовать функцию зависимых проектов XCode для использования Three20, даже несмотря на то, что сайт Three20 говорит, что он "официально не поддерживается":

  1. В рабочей области щелкните правой кнопкой мыши пустое место в навигаторе проекта. Выберите «Добавить файлы в« Моё рабочее пространство »и выберите проект three20 (three20/src/Three20/Three20.xcodeproj). Это проект only , который нужно добавить: нет необходимости вручную добавлять три20 подпроектов.

  2. Выберите ваш проект в навигаторе, перейдите к этапам сборки, откройте «Связать двоичные файлы с библиотеками», нажмите «+» в левом нижнем углу и добавьте библиотеки Three20: libThree20.a, libThree20Core.a, libThree20Network.a, libThree20Style.a, libThree20UI.a, libThree20UICommon.a и libThree20Navigator.a. Это заставит Xcode собрать Three20 при сборке вашего проекта.

  3. Добавьте ${BUILD_DIR}/three20 к включаемому пути в соответствии с ответом Колина: перейдите в настройки сборки, дважды щелкните «Пути поиска по заголовкам» и добавьте ${BUILD_DIR}/three20 (он будет отображаться как build/three20 при закрытии диалог).

  4. Добавьте three20/src/Three20.bundle к своим ресурсам.

  5. Возможно, также неплохо добавить флаги компоновщика -ObjC и -all_load, если вы этого еще не сделали (тот же диалог, настройка «Другие флаги компоновщика»).

Приведенные выше шаги достаточно хороши для компиляции кода. Чтобы «Архив» тоже работал, вам нужно:

  1. Добавьте $(BUILT_PRODUCTS_DIR)/../three20 и $(BUILT_PRODUCTS_DIR)/../../three20 в настройку Пути поиска по заголовку. Если вы этого не сделаете, вы получите ошибки компиляции, что три20 заголовки не могут быть найдены.

  2. Для всех Three20 проектов (не только для проекта верхнего уровня), перейдите в Настройки сборки и установите «Пропустить установку» на ДА. Если вы этого не сделаете, проект будет построен, но вы не сможете создать IPA.

Убедитесь, что название вашего продукта (выберите цель, перейдите в «Настройки сборки», затем «Имя продукта») не содержит пробелов, иначе архивирование не будет работать.

Наконец, если вы получаете ошибки, такие как ld: library not found for -lThree20, и используете нестандартную конфигурацию сборки (например, AdHoc), обязательно добавьте одинаковую конфигурацию сборки для каждого из проектов Three20 (просто продублируйте Release). конфигурации).

3 голосов
/ 17 марта 2011

Вы должны проверить этот вопрос StackOverflow .

Я воспроизвел принятый ответ ниже:

Так что это выглядит как самый простой способ получитьСтарые проекты Xcode 3.2 для работы с Xcode 4 заключаются в следующем:

Перейдите в настройки Xcode 4 (Cmd +,).Выберите вкладку «Местоположения».Там, где написано «Build Locations», выберите выпадающий список и выберите «Поместить продукты сборки в местоположения, указанные в целях». Я напишу статью на Three20.info, в которой более подробно расскажу об этом.

1 голос
/ 12 июля 2011

Добавьте эти два пути к путям поиска в заголовке в настройках сборки для своей цели:

"$ (BUILD_DIR) / three20" "$ (BUILD_DIR) /../ three20"

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

Это так просто.


Кстати, для создания файла вваш домашний каталог со списком всех переменных среды Xcode для окружения вашей цели, добавьте следующую стадию сборки скрипта Run к вашей цели с содержанием: ENV> ~ / xcode-environment.sh

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

...