【问题标题】:React-native iOS Bridging module in SwiftSwift 中的 React-native iOS 桥接模块
【发布时间】:2019-09-23 07:49:24
【问题描述】:

我想创建一个原生模块,以便在我的 react-native 项目中使用它。特殊之处是我想使用 Swift 语言。

所以我使用 react-native init 命令创建了一个新的 RN 项目。

这是我的包依赖项:

  • RN (0.59.5)
  • 反应 (16.8.3)

我在我的 node_modules 目录中创建了一个名为 react-native-hello-world 的目录,以便 1) 用一个简单的示例进行训练 2) 模拟我未来的 Npm 包。

在这个目录中,我创建了我的 HelloWorld.xcodeproj。

-- nodes_modules
   -- react-native-hello-world
      -- ios/
         -- HelloWorld/
            -- HelloWorld.xcodeproj
            -- HelloWorld/
               -- HelloWorld.swift
               -- HelloWorld-Bridging-Header.h

正如我提到的,我想使用 Swift 创建这个模块。因此,正如 RN 文档所述,我使用 XCode 创建了一个桥接头文件。

那是我的问题开始的时候......当我添加

#import <React/RCTBridgeModule.h>

在我的 HelloWorld-Bridging-Header.h 文件中发生错误并说 'React/RCTBridgeModule.h' 文件未找到

我试图清理我的项目,甚至删除我的派生数据,但我仍然有这个错误。

我什至在目标的标头搜索路径中添加了 React 的 .h 文件。

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

但我仍然有这个错误......我不明白为什么,在我看来我做了所有我必须做的事情。所以也许我们不能使用 Swift 创建原生模块?

如果我犯了错误,或者他们已经设法告诉我该怎么做,有人可以告诉我吗?

非常感谢您的帮助,

谢谢你:)

【问题讨论】:

    标签: ios swift react-native npm


    【解决方案1】:

    如果您只有 peer dependencies 并尝试打开 HelloWorld.xcodeproj (据我了解这是您的模块)它将无法正常工作,因为您没有node_modules 到您的 custom_module 文件夹中。

    1. a) 将此模块添加到您的主项目 package.json

      “依赖”:{ “react-native-hello-world”:“文件:custom_modules/RNHelloWorld”, ... }

    2. npm 安装

    3. 打开您的PROJECT_NAME/ios/PROJECT_NAME.xcodeproj

    4. 您可以看到您的 RNHelloWorld 添加到您的

    5. 您可以在此处开始使用您的自定义模块,并且 RCTBridgeModule 的错误将消失,因为您的 链接库中有 libReact.a二进制文件

    【讨论】:

    • 当我将模块的 xcodeproj 添加到我的 RN 项目的库中时,它确实有效。但是,为了完成答案,你能告诉我独立构建我的模块是否有意义。我解释一下自己,假设我不想创建一个 RN 项目只是为了测试我未来的模块。我可以在我的模块的 package.json 中将 react-native 声明为开发依赖项并执行与您描述的相同的过程吗?
    • 是的,您可以将 RN 添加到 devDependencies 和 npm install。在 npm install check 之后,您在 Link LIbrary 中拥有 Binaries RN 库。如果您没有 RN 库,您可以手动添加它们。
    • 感谢您的回答@Hardy1207!顺便说一句,为了使用用 Swift 编写的桥接模块,您还必须在主应用程序中有一个 Bridging-Header.h 文件 + 一个虚拟 swift 文件。否则会报错。
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多