构建 React Native 桥,但找不到框架内的文件
Building a React Native bridge but a file within the framework can't be found
我正在尝试为 RichRelevance iOS SDK 构建 React Native 包装器。
我已经创建了包装器项目并将其导入到我的 React Native 应用程序中。我正在使用 Cocoapods 将 RichRelevance SDK 添加到应用程序
我现在正尝试使用以下方法将 RichRelevance SDK 导入包装器项目:
#import <RichRelevanceSDK/RichRelevanceSDK.h>
我遇到的问题是,当编译器尝试编译 RichRelevanceSDK 时,它会抛出一个错误,提示找不到其中一个文件:
第63行是SDK中编写的原始导入。我添加了第 62 行以显示如果更改导入类型可以找到该文件。但是,这并不是一个真正的选择,因为我不想修改 SDK(我不拥有它)。
在任一类型的导入中,我都可以按住 cmd 并单击文件并转到定义。所以 XCode 似乎知道该文件。此外,我在项目浏览器中看到该文件位于:
Pods -> Pods -> RichRelevanceSDK -> RCHImportable.h
这个文件的主要区别在于,如果我在文件浏览器中查看,该文件位于一个子文件夹中,相对于 SDK 中的所有其他文件:
我希望有一种方法可以更改我的包装器项目,以便可以找到该文件,这样我就不必编辑或分叉 SDK 文件。
到目前为止,我已经尝试更新包装器项目中的各种搜索路径,但没有成功。我已将以下两条路径添加到所有搜索路径中:
更新:
我取得了一些进展,现在可以编译了。
我结束了:
- 将 SDK 的存储库克隆到我的计算机上
- 正在从 Podfile 中删除 SDK
- 将 SDK 的 xcodeproj 文件添加到 MyApp/Libraries
- 将 SDK.framework 文件添加到 MyApp -> 嵌入式二进制文件
- 我现在可以将 SDK 导入我的桥接模块
尽管如此,我还是希望找到更好的方法。这种方法要么涉及我将 SDK 提交到我们的存储库,要么要求我所有的同事将存储库克隆到他们的机器上。 NPM 似乎无法安装 repo;我猜这是因为回购缺少 package.json
文件
包装似乎确实有问题,因为有问题的 header 似乎被捕获在 Podspec 的 public_header_files glob 中。
但是,我认为更直接的路径是简单地包含 RCHSDK.h 文件,因为 RCHSDK 是 SDK 函数的入口点。 RichRelevanceSDK.h 主要作为 shorthand 用于导入额外的 header 而不是单独指定它们。
或者,您可以按照 Include of non-modular header inside framework module 中的说明进行操作,这似乎解决了本地测试中的问题。
我正在尝试为 RichRelevance iOS SDK 构建 React Native 包装器。
我已经创建了包装器项目并将其导入到我的 React Native 应用程序中。我正在使用 Cocoapods 将 RichRelevance SDK 添加到应用程序
我现在正尝试使用以下方法将 RichRelevance SDK 导入包装器项目:
#import <RichRelevanceSDK/RichRelevanceSDK.h>
我遇到的问题是,当编译器尝试编译 RichRelevanceSDK 时,它会抛出一个错误,提示找不到其中一个文件:
第63行是SDK中编写的原始导入。我添加了第 62 行以显示如果更改导入类型可以找到该文件。但是,这并不是一个真正的选择,因为我不想修改 SDK(我不拥有它)。
在任一类型的导入中,我都可以按住 cmd 并单击文件并转到定义。所以 XCode 似乎知道该文件。此外,我在项目浏览器中看到该文件位于:
Pods -> Pods -> RichRelevanceSDK -> RCHImportable.h
这个文件的主要区别在于,如果我在文件浏览器中查看,该文件位于一个子文件夹中,相对于 SDK 中的所有其他文件:
我希望有一种方法可以更改我的包装器项目,以便可以找到该文件,这样我就不必编辑或分叉 SDK 文件。
到目前为止,我已经尝试更新包装器项目中的各种搜索路径,但没有成功。我已将以下两条路径添加到所有搜索路径中:
更新: 我取得了一些进展,现在可以编译了。
我结束了:
- 将 SDK 的存储库克隆到我的计算机上
- 正在从 Podfile 中删除 SDK
- 将 SDK 的 xcodeproj 文件添加到 MyApp/Libraries
- 将 SDK.framework 文件添加到 MyApp -> 嵌入式二进制文件
- 我现在可以将 SDK 导入我的桥接模块
尽管如此,我还是希望找到更好的方法。这种方法要么涉及我将 SDK 提交到我们的存储库,要么要求我所有的同事将存储库克隆到他们的机器上。 NPM 似乎无法安装 repo;我猜这是因为回购缺少 package.json
文件
包装似乎确实有问题,因为有问题的 header 似乎被捕获在 Podspec 的 public_header_files glob 中。
但是,我认为更直接的路径是简单地包含 RCHSDK.h 文件,因为 RCHSDK 是 SDK 函数的入口点。 RichRelevanceSDK.h 主要作为 shorthand 用于导入额外的 header 而不是单独指定它们。
或者,您可以按照 Include of non-modular header inside framework module 中的说明进行操作,这似乎解决了本地测试中的问题。