Встраивание XCFramework в приложение с зависимостями фреймворка проекта - PullRequest
2 голосов
/ 05 февраля 2020

У меня есть рабочее пространство Xcode, в котором есть проект с целью приложения iOS и другой проект с целью Framework. Цель фреймворка зависит от другого фреймворка, который интегрирован в виде xcframework:

  • MyApp
  • MyFramework
    • OtherFramework

Использование обычного OtherFramework.framework потребует, чтобы он был связан с MyFramework, а затем встроен в MyApp, даже если MyApp не требует сам фреймворк. Однако при интеграции с xcframework этот проект не может быть собран с ошибкой No such module 'OtherFramework'.

Настройки проекта:

MyFramework Project

MyApp Project

Удаление OtherFramework.xcframework из цели MyApp устраняет проблему сборки, но затем вызывает ошибки library not loaded, поскольку платформа не присутствует в приложении.

Демонстрационный проект здесь: https://github.com/msaps/XCFramework-Link-Issue

Как вы хотите связать xcframework в приложении и ссылку в зависимой структуре?

Ответы [ 5 ]

0 голосов
/ 28 апреля 2020

IMO, похоже не проблема xcframework.

Проверьте этот ответ: { ссылка }

Каркасы зонтов не поддерживаются на iOS, watchOS или tvOS.

OtherFramework.xcframework должен быть подписан и встроен в ваше хост-приложение.

и добавить параметр «@ executetable_path / Frameworks» в ваш MyFramework.framework> Настройки сборки> Пути поиска Runpath.

0 голосов
/ 21 апреля 2020

У меня была та же проблема, что и у вас, и после просмотра вашего pbxproj я думаю, что она может быть решена таким же образом.

Измените путь поиска в вашей среде на рекурсивный (через пользовательский интерфейс или вручную отредактировав pbxproj * 1003). * => "$(SRCROOT)/../Frameworks/**"), вот так: https://github.com/msaps/XCFramework-Link-Issue/pull/1/files

0 голосов
/ 05 февраля 2020

Проверьте настройки сборки и определите пути поиска фреймворка для папки, в которой находятся фреймворки. Если фреймворки размещены в каталоге вашего проекта, просто установите путь поиска фреймворка на $ (SR CROOT) и установите его на рекурсивный.

проверьте ответ Получение ошибки "Нет такого модуль "использующий Xcode, но фреймворк есть

0 голосов
/ 13 апреля 2020

У меня также была эта проблема после использования xcframework вместо framework. Поэтому я изменил структуру своего проекта:

MyFramework Peoject embed OtherFramework.xcframework, затем экспортируйте его, используя @_exported import OtherFramework in MyFramework Peoject. И MyApp просто ссылка MyFramework, но может импортировать / использовать MyFramework и OtherFramework.

Кстати, кажется, что пользовательский @rpath и ручной кодовый знак OtherFramework.

0 голосов
/ 05 февраля 2020

У меня тоже была такая проблема. Во-первых, убедитесь, что у вас есть файл MyFramework.framework в том же каталоге, что и MyApp.

Во-вторых, при сборке MyFramework.framework убедитесь, что OtherFramework.xcframework также находится в каталоге проекта MyFramework.

И еще, проверьте целевые версии SDK. Они должны быть где-то на одном уровне.

...