Как создать фреймворк React-Native с помощью Swift

У меня есть собственный компонент реагирования, написанный на Swift, и я хочу извлечь его в качестве фреймворка, чтобы другие проекты/люди могли легко его использовать.

Сначала я создал новый проект для iOS Foo, добавил цель фреймворка, затем добавил исходные файлы. Наконец-то я его построил.

Не удалось, потому что:

Bar.swift: [lineNumber]: использование неразрешенного идентификатора 'RCTConvert'     RNBarManager.swift: [lineNUmber]: использование необъявленного типа 'RCTViewManager'

Попытка 1:

Я запустил react-native link, но ничего не изменилось.

Попытка 2:

  1. Перетащите React.xcodeproj в проект Foo и добавьте libReact.a в Link Binary With Libraries.
  2. Добавьте $(SRCROOT)/../node_modules/react-native/React к Header Search Paths.

Но это не работает. Ошибка все еще остается.

Попытка 3:

Я подумал, может быть, Swift не распознает эти файлы.

Поэтому я добавил Foo-Bridging-Headers.h, как сделал это в приложении React-Native, которое содержит следующий код:

#import "React/RCTBridge.h"
#import "React/RCTViewManager.h"
#import "React/RCTUIManager.h"
#import "React/UIView+React.h"
#import "React/RCTBridgeModule.h"

Я также добавил Foo-Bridging-Headers.h в Build Settings->Swift Compiler - General->Object-C Bridging Header,

Тем не менее я получил ошибку.

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

Кажется, здесь не разрешены соединительные заголовки.

Попытка 4:

Я пытался добавить этот импорт в Foo.h,

но снова получил ошибку.

Foo.h: 21: 9: включение немодульного заголовка в модуль фреймворка 'Foo'

Что я должен сделать, чтобы успешно скомпилировать?

Ответ 1

Это похоже на проблему с cocoa-бобами, необходимыми для связи React с вашим проектом.

Попробуйте запустить pod install в каталоге вашего проекта с помощью терминала, а затем попробуйте собрать.

Ответ 2

Связывание происходит в приложении хостинга, а не в созданной вами структуре. Это просто нужно заголовки.