Подтвердить что ты не робот

Текущие инструкции по установке XMPPFramework вручную?

Мне очень сложно заставить XMPPFramework работать. Я следил за каждым направлением, написанным в сети, и XCode не нашел ни одного из моих классов XMPPFramework.

Ожидаемый список спецификаторов-спецификаторов перед 'XMPPStream' XMPP.h: Нет такого файла или каталога XMPPRoster.h: Нет такого файла или каталога

У меня есть XMPPFramework, скопированный в корневой каталог проекта. Почему эти файлы не видны? Есть ли что-то, что мне нужно сделать в разделе "Пути поиска заголовков" или "Пути поиска в библиотеке"?

Я установил эти записи в $(унаследованный) и $(SRCROOT), а XCode 4.2 автоматически заполняет корневой каталог проекта и все еще не находит файлы.

Я совершенно уверен, что я не единственный, у кого есть эта проблема, и это шоу-шоу. Любые идеи?

4b9b3361

Ответ 1

В XMPPFramework gitHub wiki 1 есть пошаговая инструкция, которая помогает настроить XMPPFramework для вашего проекта.

Фактически указанная вами ошибка близка к тому, что указано в инструкциях.

"Однако при импорте класса XMPPFramework, например, путем вызова" #import XMPP.h "приведет к тому, что XCode покажет ошибку" XMPP.h "не найден. Похоже, что XCode не находит файлы XMPPFramework."

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

Ответ 2

Вики на github устарели. Вот как я установил XMPPFramework вручную.

Шаг 1

Скройте XMPPFramework репозиторий где-то на вашем компьютере и перетащите необходимые папки в somewhere/XMPPFramework в проект Xcode.

Необходимыми папками являются:

  • Поставщик /CocoaAsyncSocket
  • Vendor/CocoaLumberjack
  • Vendor/KissXML
  • Vendor/libidn
  • Аутентификация
  • Категория
  • Core
  • Утилиты

Вам также может понадобиться Extensions, но необязательно.

Важно выбрать флажок/радиокнопки точно так же, как это изображение при перетаскивании папок на ваш Xcode:

enter image description here

Шаг 2

a) Перетащите Sample_XMPPFramework.h в свой Xcode и установите флажки/переключатели, например, шаг 1

b) переименуйте его в XMPPFramework.h

c) настройте содержимое XMPPFramework.h на основе ваших потребностей. (Я ничего не изменил)

После выполнения шагов 1 и 2 структура файла должна выглядеть так в навигаторе проекта Xcode:

enter image description here

Шаг 3

связать следующие структуры и библиотеки

  • CFNetwork.framework
  • Security.framework
  • libxml2.dylib
  • libresolv.dylib
  • libidn.a

enter image description here

Шаг 4

Добавили эти 2 строки в Build Settings:

  • другие флаги компоновщика = -lxml2 enter image description here
  • ПУТЬ ПОИСКА ВЫЗОВОВ =/usr/include/libxml2 enter image description here

После этих 4 шагов вы должны быть хорошими. Однако обратите внимание, что перед использованием XMPPFramework

обычно требуется #import <UIKit/UIKit.h>

Ответ 3

Дополнительная информация, относящаяся к инструкциям в ответе @Brian.

Дополнение к этапу 3:
Если файл lib, такой как libxml2.dylib, недоступен в окне "Выбор фреймворков и библиотек для добавления", выполните следующие действия, чтобы найти его:

  • Нажмите Add Other...
  • В окне выбора файла COMMAND+SHIFT+G (Перейти в папку)
  • Введите /usr/lib, а затем Enter или нажмите Go
  • Выберите нужный файл .dylib и нажмите Open

После шага 4:
Также обратите внимание, что в XMPPFramework и его зависимостях используется ARC. Если ваше приложение использует MRR вместо ARC, либо конвертируйте приложение в ARC, либо выполните шаг 5.

Шаг 5

Добавить -fobjc-arc флаг компилятора в файлы XMPPFramework.

В Xcode для каждой цели, которая будет использовать XMPPFramework,

  • Перейти к целевым настройкам
  • Перейдите к Build Phases
  • Развернуть Compile Sources
  • Выберите все файлы, связанные с XMPPFramework, в списке
  • Нажмите Enter, чтобы открыть окно редактирования для флагов компиляторов
  • Тип -fobjc-arc
  • Enter, чтобы сохранить изменения.

Список Compile Sources не сортирован, поэтому полезно использовать поле поиска для фильтрации списка на XMPP, а затем на XEP. Это находит большинство файлов, но есть еще некоторые, которые должны быть выбраны из полного списка файлов.