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

Невозможно добавить встроенные двоичные файлы (другие проекты) в зависимости от проекта в XCode

У меня есть рабочее пространство XCode, созданное с XCode 6.0.1. Он содержит 2 (Swift) библиотеки и одно приложение iOS (Swift), которое зависит от этих двух библиотек. У меня была стабильная настройка, которая позволила мне запустить приложение iOS на iPhone и симуляторах: два проекта библиотеки были добавлены как встроенные бинарные файлы (см. Рисунок) приложения.

Теперь у меня XCode 6.1. Недавно я удалил папку DerivedData в папке ~/Library/Developer/Xcode во время работы XCode. После этого мое рабочее пространство не сработало - приложение iOS не скомпилировалось, и я получил ошибку компоновщика, заявив, что не может найти проекты библиотеки.

Я попытался решить эту проблему, удалив мои 2 библиотеки из Embedded Binaries проекта приложения, и я не могу их добавить. При нажатии кнопки + в разделе "Встроенные двоичные файлы" в настройках проекта отображаются проекты рабочей области правильно, но выбор и добавление моего проекта библиотеки не добавляет их в список встроенных бинарных файлов. Я решил ошибку компоновщика, создав новое рабочее пространство. Приложение компилирует, но то, как он связывает библиотеки, является для меня загадкой: они не входят в перечисленные встроенные двоичные файлы или связанные структуры и библиотеки, а не в путь поиска Framework. Похоже, что нет никакой связи между приложением и библиотеками, которые ему нужны (и, очевидно, имеют при компиляции), за исключением того, что проекты библиотек находятся в одном рабочем пространстве.

Почему я не могу добавить библиотечные проекты в встроенные двоичные файлы? Нормально ли в XCode 6.1 проекты зависимостей просто компилируются и внедряются в приложение без ссылки или ссылки где-нибудь?

enter image description here

4b9b3361

Ответ 1

Это сводка моего ответа на вопрос Xcode не добавит "Встроенный двоичный файл" после удаления "DerivedData" , см. исходный вопрос и ответ для большего контекста и информации:

  • Удалите все каркасные проекты из рабочей области
  • Выполните "чистую сборку" и/или удалите "DerivedData"
  • Добавить проект обратно в рабочую область
  • Постройте проект (возможно, необязательно)
  • На вкладке "Общие" целевого приложения нажмите "+" под "Связанные структуры и библиотеки" , выберите фреймворк.
  • Создайте и запустите в симуляторе (не должно быть никаких проблем при создании или запуске)
  • Создайте и запустите для устройства (это может привести к сбою из-за неправильной привязки структуры, игнорировать этот сбой)
  • Нажмите + в "Встроенные бинарные файлы" , выберите фреймворк. Это должно добавить его в проект (возможный дубликат в разделе "Связанные структуры и библиотеки" ).
  • Повторить для всех необходимых фреймворков
  • После создания и запуска (на устройстве) вы можете удалить любые дубликаты (и/или красные) фреймворки в Навигаторе проектов или на вкладке "Общие"

Ответ 2

Хорошо, я столкнулся с той же проблемой, что и вы. После удаления полученных данных я не смог снова связать свои двоичные файлы. Я думаю, причина в том, что производные данные - это то, где двоичные файлы записываются и связаны с вашим проектом.

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

Как только я это сделал, мне удалось повторно связать Framework с моим проектом, потому что на нем была ссылка на диск. Надеюсь, это поможет!

Ответ 3

Сначала очистите свои проекты и создайте свою инфраструктуру. После этого вы можете вставить его.

Ответ 4

Вот как я решил проблему:

  • Постройте фреймворк.

  • Откройте папку сборки и перетащите встроенную фреймворк в проект приложения (поэтому он использует путь к DerivedData).

  • Добавьте фреймворк в список встроенных фреймворков.

  • В Finder сделайте Show Contents в файле приложения xcodeproj, затем откройте project.pbxproj в своем любимом текстовом редакторе.

  • Найдите строку с длинным пути DerivedData. Измените его так, чтобы имя не было, путь - это имя фрейма, а исходное дерево - BUILT_PRODUCTS_DIR

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

Ответ 5

У меня очень похожая проблема, и я исправил ее только вчера вечером. Решил вернуться к этой теме и предложить свое обходное решение, так как решение rjstelling выше не помогло моему делу.

У меня есть рабочее пространство, содержащее две структуры и одно приложение. Приложение долгое время использовало оба фреймворка, пока я не попал в таинственную компиляцию, где решил, что добавление свойства доступа к переменной экземпляра, называемой "кубом" типа класса, найденной в одной из фреймворков, к "_cube" невозможно (жалуясь, что он не был объявлен, хотя он фактически работал ранее в методе setter).

Короче говоря, после чистого, каким-то образом проект рабочей области/приложения потерял следы встроенной инфраструктуры моего проекта iOS 8+. Удаление встроенной инфраструктуры было последней каплей в этой строке отказа, в результате чего мой проект больше не позволял выбирать любые фреймворки для встраивания.

Возвращение проекта и рабочего пространства к более ранней версии не избавило вас от voodoo.

В итоге я включил в проект основного проекта (в виде файлов) готовые проекты фреймворка и представил целевые зависимости для фреймворков.

Затем я смог повторно внедрить фреймворки и ссылку.

Что касается объекта _cube, я должен был указать getter для свойства и @synthesize свойство для другого имени. У меня нет объяснений для этого.

Ответ 6

Вероятно, потому, что ваша инфраструктура - отдельный проект, а не отдельная цель. Попробуйте внимательно посмотреть Сессия 416: Создание современной структуры в течение примерно минут 34-36. Он покажет вам, как правильно настроить его.

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