构建React Native桥,但框架内的文件无法找到

时间:2017-11-10 18:10:35

标签: xcode react-native react-native-ios

我正在尝试为RichRelevance iOS SDK构建React Native包装器。

我已经创建了包装器项目并将其导入我的React Native应用程序。我正在使用Cocoapods将RichRelevance SDK添加到应用

我现在尝试使用以下方法将RichRelevance SDK导入到包装器项目中:
#import <RichRelevanceSDK/RichRelevanceSDK.h>

我遇到的问题是,当编译器尝试编译RichRelevanceSDK时,会抛出一个错误,指出找不到其中一个文件: error message showing "'RichRelevanceSDK/RCHImportable.h' file not found"

第63行是SDK中编写的原始导入。我添加了第62行,表明如果更改了导入类型,则可以找到该文件。但是,这不是一个真正的选择,因为我不想修改SDK(我不拥有它)。

在任何一种导入方式中,我都可以cmd +单击该文件并转到定义。所以XCode似乎知道这个文件。另外,我在项目浏览器中看到该文件: Pods -> Pods -> RichRelevanceSDK -> RCHImportable.h

与此文件的主要区别在于,如果我查看文件浏览器,该文件位于子文件夹中,相对于SDK中的所有其他文件: screen shot of file system showing the file in the Import sub-folder

我希望有一种方法可以更改我的包装器项目,以便找到此文件,因此我不必编辑或分叉SDK文件。

到目前为止,我已经尝试更新我的包装器项目中的各种搜索路径,但没有运气。我已经为所有搜索路径添加了以下两个路径: screen shot showing the search paths

更新 我能够取得一些进展,现在我可以将其编译。

我结束了:

  1. 将SDK的repo克隆到我的电脑
  2. 从Podfile中删除SDK
  3. 将SDK的xcodeproj文件添加到MyApp / Libraries
  4. 将SDK.framework文件添加到MyApp - &gt;嵌入式二进制文件
  5. 我现在可以将SDK导入我的桥接模块
  6. 我仍然希望找到更好的方法来做到这一点。这个方法要么让我将SDK提交到我们的仓库,要么让所有同事将仓库克隆到他们的机器上。 NPM似乎无法安装回购;我的猜测是因为repo缺少package.json文件

1 个答案:

答案 0 :(得分:1)

包装似乎有问题,因为有问题的标题似乎是在Podspec的public_header_files glob中捕获的。

但是,我认为更直接的方法是简单地包含RCHSDK.h文件,因为RCHSDK是SDK函数的入口点。 RichRelevanceSDK.h主要用作导入其他标题的简写,而不是单独指定它们。

或者,您可以按照Include of non-modular header inside framework module中的说明操作,这似乎可以解决本地测试中的问题。