我希望在已经存在的iOS应用程序中集成react原生模块,但将这两种解决方案分开处理。我不想做这个修改现有解决方案的https://facebook.github.io/react-native/docs/integration-with-existing-apps.html,我希望有一个独立的本机解决方案,并以某种方式将react本机应用程序的Xcode项目导入到我已经存在的应用程序中。这允许我继续开发已经存在的应用程序,而不受RN解决方案的影响,RN解决方案安装并向Xcode项目添加库。基本上,概念是将react本机解决方案导出为一个包或静态库,并将其导入到我已经存在的iOS应用程序中。之后,从已经存在的iOS应用程序中与这个库进行交互,并允许React原生解决方案库与已经存在的应用程序交互。应该有一种方法可以从已经存在的应用程序到RN解决方案库,也可以从RN解决方案库与已经存在的RN解决方案库(即从已经存在的iOS应用程序启动模块以及从RN解决方案启动视图)通信,这是可能的吗?
发布于 2018-03-20 06:49:08
你可以做你所指的大部分事情。打扰一下如果错过了什么..。
Runninig作为独立的
如果在RN目录中没有ios和android文件夹,则必须从CLI运行react-native eject
。
React-本机应用程序可以使用下面的CLI命令作为独立的本地应用程序启动:
react-native run-ios
(仅在MacOS上)
react-native run-android
如果使用默认值,则添加--port ####
。
这两个命令都将启动类似沙箱的本地应用程序,该应用程序将在其中加载JS。它还将启动Metro bundler,它也将为js包提供服务。
将RN加载到现有的应用程序中
您需要将用于和iOS的本机 RN库添加为依赖项,以便可以使用它们从Dev服务器加载JS或在本机构建中插入JS。
要使用dev服务器,请运行react-native start
。
要将JS构建为将添加到本机包的文件,您必须运行:
react-native bundle ios
后面跟着几个选项
--dev false
或真
--entry-file index.ios.js
将此更改为与您的条目文件匹配。可能只是index.js。小心地匹配Java/Obj代码中的名称。
--bundle-output ../YOUR-EXISTING-IOS-APP/main.jsbundle
--assets-dest ../YOUR-EXISTING-IOS-APP
Communication
这种情况发生在RCTBridge上。
有关如何从RN环境访问本机功能的说明和示例,请参见检查这一页。
https://stackoverflow.com/questions/49385277
复制相似问题