创建一个具有React依赖性的静态库

时间:2018-02-13 15:13:30

标签: swift xcode reactjs react-native static-libraries

我创建了一个使用本机导航控制器来浏览反应和本机屏幕的库。该库是用Swift编写的,包含一些Objective-c代码来设置React桥等。目前我可以通过CocoaPods通过创建podspec并在那里定义React依赖来分发这个库。但是,这会强制用户通过CocoaPods在他们的项目中设置React(如:https://facebook.github.io/react-native/docs/integration-with-existing-apps.html)。我希望他们也使用react-native link或手动链接选项(如:https://medium.com/@joshyhargreaves/adding-react-native-to-existing-ios-project-without-cocoapods-6f1ee9106009)。

如果我理解正确,我可以创建一个静态库并分发它。到目前为止,我创建了这个静态库,添加了我的混合swift和objective-c代码,并尝试将其手动链接到我的主项目中。然而,这会在我的静态库中的一个类中产生错误,我在其中导入React,如此import React。错误是"No such module 'React'

我更新了静态库的标头搜索路径以包含:

$(SRCROOT)/../react-native/React$(SRCROOT)/../React

(react-native,React和我自己的lib都在node_modules文件夹中)

都设置为递归。不幸的是它仍然没有找到React模块。有谁知道如何使用React创建一个包含依赖的静态库?

最终目标是在我的主项目中导入这个静态库,例如我的一个viewcontrollers中的import MyStaticNaivationLib和我在静态库中定义的类的子类。

我的主项目也使用https://github.com/rebeccahughes/react-native-device-info。这看起来正是我想要实现的目标。它是一个静态库,它与React(“import RCTBridgeModule.h”)具有可靠性,我可以在我的主项目中手动链接。唯一的区别是该项目不包含Swift代码。

1 个答案:

答案 0 :(得分:0)

我为公司编写了一个自定义模块,您可以查看我的文档。这个自定义模块具有内部框架,我将此框架链接到主项目。在您的custom_modulem中,您是否带有package.json?

 "peerDependencies": {
    "react": "16.8.3",
    "react-native": "0.59.4"
  }

https://github.com/Hardy1207/RNOkay