如何使用 Swift 创建 React-Native 框架
Posted
技术标签:
【中文标题】如何使用 Swift 创建 React-Native 框架【英文标题】:How to create a React-Native framework using Swift 【发布时间】:2017-03-03 04:21:30 【问题描述】:我有一个用 Swift 编写的 react native 组件,我想将它提取为一个框架,以便其他项目/人员可以轻松使用它。
首先我创建了一个新的ios项目Foo
,添加了一个框架目标,
然后添加源文件。最后,我构建了它。
失败是因为:
Bar.swift:[lineNumber]: 使用未解析的标识符“RCTConvert” RNBarManager.swift:[lineNUMber]: 使用未声明的类型'RCTViewManager'
尝试 1:
我跑了react-native link
,但没有任何改变。
尝试 2:
-
将
React.xcodeproj
拖到Foo
项目并将libReact.a
添加到Link
Binary With Libraries
。
将$(SRCROOT)/../node_modules/react-native/React
添加到Header Search Paths
。
但它不起作用。错误仍然存在。
尝试 3:
我在想也许 Swift 无法识别这些文件。
所以我添加了Foo-Bridging-Headers.h
,就像我在 React-Native App 中所做的那样,其中包含以下代码:
#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”中包含非模块化标头
如何编译成功?
【问题讨论】:
也许你可以把这个问题发到CocoaPods github issue section,我想他们会很乐意帮助你的:) @XuDong 找到解决方案了吗? 似乎 David Chavez 提供了一种正确的方式来发布 React Native Charts Wrapper:github.com/wuxudong/react-native-charts-wrapper/pull/257 要创建这样的框架,您可以使用我的github.com/iyegoroff/make-react-native-package CLI 工具。它创建了一个支持 Swift 的可发布 RN 包。 【参考方案1】:这似乎是将 React 链接到您的项目所需的可可豆荚的问题。
尝试使用终端在您的项目目录中运行pod install
,然后尝试构建。
【讨论】:
【参考方案2】:链接发生在托管应用程序中,而不是您创建的框架中。那只需要标题。
【讨论】:
以上是关于如何使用 Swift 创建 React-Native 框架的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中使用 .xib 创建 UIViewController 子类?