2013-04-08 2 views
1

В настоящее время я создаю библиотеку, которая должна использоваться внутри нескольких проектов iOS, но также должна быть распространена среди клиентов, обращающихся к нашим службам с библиотекой. Сама библиотека состоит исключительно из кода на C++, и я в основном могу создавать приложения с ней на iOS, которые отлично работают. Моя проблема заключается в создании единого, легко распространяемого файла, который может быть предоставлен клиентам, которые могут легко установить их, использовать предоставленные заголовки и не нуждаться в головных болях, с которыми я сталкиваюсь сейчас, когда речь идет о связывании.Создание распределяемой среды для приложений iOS

Наш код зависит от двух других проектов: boost и websocketpp. Для boost есть сценарий on github, который я использовал для создания фреймворка. Для websocketpp я импортировал его в XCode и использовал сценарии от this github project для создания фреймворка. Я добавил оба фреймворка к моей (потенциальной) структуре в качестве зависимостей и использовал один и тот же скрипт для его создания.

У меня есть приложение, использующее мою библиотеку в качестве подпроекта, работающего отлично. Даже включая рамки в проект и запуск его на устройстве прекрасно работает. Все идет нормально.

Однако попытка создать архив проекта приложения приведет к нескольким вопросам и головным болям.

  1. В моей библиотеке, похоже, не содержится кода для всех архитектур. Поэтому я попытался архивировать проекты Framework, которые после небольших изменений в сценариях сборки используют разные местоположения для поиска заголовков.

  2. Он, кажется, не содержит всех двоичных кодов или ссылок на локальные файлы (то есть мое конкретное местоположение повышения). Я понял, что из ошибок Linker, которые я все еще получаю, скажу, что некоторые вызовы boost не могут быть удовлетворены.

Второй вопрос заставил меня думать, что я должен делать что-то в корне неправильно, и моя интуиция подсказывает мне, что это не может быть, что сложно и «хак» для создания рамок или библиотек для других для развития IOS.

Как вы, наверное, уже выяснили, я не очень опытен, когда дело доходит до iOS, и мне интересно, нет ли у меня чего-то принципиально. Таким образом, я уверен, что этот вопрос достаточно широк, так что некоторые более конкретные ярлыки:

  1. Есть (руга) способ создания своего рода распространяемых (предпочтительно каркас), который содержит: мои публичные заголовки, мой двоичный код, скомпилированный для всех платформ, поддерживаемых для разработки iOS, двоичный код зависимостей?
    • Это единственный способ сделать это, добавив некоторые рукописные скрипты в процесс сборки?
    • У меня такое ощущение, что информация, которую я нашел, устарела, так как она старше года и в основном относится к Xcode 4.2 или 4.3 - так что в последнее время что-то изменилось?
  2. Например одна ошибка, я получаю:

    File is universal (2 slices) but does not contain a(n) armv7s slice: <file> 
    

    Срез <file> путь к файлу в рамках в Products папке другого XCode рабочего пространства (библиотека была построена в другое рабочее пространство, то приложение). Я сбросил папку фреймворка в проект для этого теста из совершенно другого места.

    • Что здесь происходит?
    • Почему он продолжает ссылаться на некоторые внутренние каталоги XCode?
    • Как правильно его экспортировать?
  3. Поскольку я предполагаю, что моя установка, вероятно, спрятана и странна из всех вещей, которые я пробовал до сих пор: как эта настройка выглядит в идеальной ситуации?
  4. Да, есть некоторые вопросы, касающиеся этого на SO уже, однако, либо я не вижу или не понимаю в этих ответах:
    • ... как обрабатывать depencies моего кода на другие третий правильно.
    • ... как сгенерировать дистрибутивный файл.

ответ

1

Вы проверили свой этап сборки проекта по источникам компилировать и копировать файлы, чтобы увидеть, если вы в том числе ваши каркасные исходные файлы в сборке?

Вы также можете попробовать шаблон библиотеки C/C++ в разделе OSX -> Framework & Библиотека.

Наконец, есть также kstenerud’s iOS Universal Framework, который я нашел очень полезным. Я написал несколько статей в своем blog о его использовании.

Смежные вопросы