Как использовать module.modulemap для импорта фреймворка objC внутри фреймворка swift? - PullRequest
1 голос
/ 15 мая 2019

Я создаю фреймворк Swift Я должен использовать среду Objective-C внутри платформы Swift.

Мы не можем использовать соединительный заголовок, поскольку target - это среда Swift, а не приложение Swift. Вместо этого я использую файл module.modulemap:

module ObjSDK
{
    header "ObjSDK.framework/Headers/classA.h"
    export *
}

Позже в наборе конфигурационных файлов:

SWIFT_INCLUDE_PATHS = $(SRCROOT)/
MODULEMAP_PRIVATE_FILE = $(SRCROOT)/module.modulemap

Тогда постройте успех.

После этого при попытке использовать classA в классе swift в среде swift произошел сбой.

Пожалуйста, предложите любые, если какие-либо пропущенные шаги или любое другое решение.

1 Ответ

0 голосов
/ 25 мая 2019

Пожалуйста, проверьте еще раз следующие шаги

  • Добавьте вашу инфраструктуру Objective C в Связанные фреймворки и Библиотеки в вашем проекте фреймворка Swift
  • Затем создайте Aggregate target для проекта и при его создании присвойте каркасу Objective C имя Product Name
  • Затем перейдите к этапу сборки и добавьте New Run ScriptФаза
  • Содержание скрипта должно быть аналогично приведенному ниже.Но замените AnujaObjectiveCFramework на имя каркаса Objective C

if [-d "$ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework"];затем выведите «$ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework каталог, который уже существует, поэтому пропустите оставшуюся часть сценария».выход 0 fi

mkdir -p "$ {BUILT_PRODUCTS_DIR} / AnujaObjectiveCFramework" cat << EOF> "$ {BUILT_PRODUCTS_DIR} /AnujaObjectiveCFramework/module.modulemap" module.mowork {mojrame_raj_Me_jj_bj_jjjjjj_jjjjjjjjjbjc_bj ")/Headers/AnujaObjectiveCFramework.h "export *} EOF

  • Затем создайте структуру Aggregate, выбрав ее из списка схемы
  • Теперь вам нужно включить эту встроенную средукак Целевая зависимость вашей платформы Swift.
  • Теперь настало время для создания вашей среды Swift.

Дополнительные сведения:

  • Как только вы ссылаетесь на этот Swift framework в вашем первоначальном проекте и в итоге получаете dyld: библиотека не загружена: @ rpath / error, тогда вам нужно изменить вашSwift frameworks Атрибут Installation Directory со значением @ EXECUTABLE_PATH /../ Frameworks , а затем добавьте свои фреймворки в группу Frameworks в свойПроект Swift.

  • Убедитесь, что классы и функции, к которым вам нужен доступ в среде Swift, имеют public или open идентификаторы доступа в соответствии сваши потребности.

  • Обязательно добавьте необходимые заголовочные файлы в свой мостовой заголовок в вашей среде Objective C.

...