React native 根据React Core(React/RCTBridge&x2B;Private.h)编写CocoaPod

React native 根据React Core(React/RCTBridge&x2B;Private.h)编写CocoaPod,react-native,cocoapods,react-native-ios,React Native,Cocoapods,React Native Ios,我正在共同编写一个React本机库,它依赖于RCTBridge。在实现对的支持的过程中,我正在写一篇文章,想知道声明对React的依赖性的最佳方式是什么 关注点#1 我目前的方法是对(不推荐使用的)React pod(我相信它将被解析为消费应用程序的Podfile指定的dev pod)具有PodSpec依赖性,并将React头的路径添加到xcconfig的头搜索路径中,基本上: app_path=File.展开_path(“....”,uuu dir_uu) Pod::规格新do | s| #

我正在共同编写一个React本机库,它依赖于RCTBridge。在实现对的支持的过程中,我正在写一篇文章,想知道声明对React的依赖性的最佳方式是什么

关注点#1 我目前的方法是对(不推荐使用的)React pod(我相信它将被解析为消费应用程序的Podfile指定的dev pod)具有PodSpec依赖性,并将React头的路径添加到xcconfig的
头搜索路径中,基本上:

app_path=File.展开_path(“....”,uuu dir_uu)
Pod::规格新do | s|
# ... 还有很多其他的东西
s、 依赖项“反应”
s、 pod_target_xcconfig={“{app_path}/ios/Pods/Headers/Public/React Core'}
结束
这是可行的,但我不喜欢它假设我的节点模块路径相对于消费应用程序ios和Pods文件夹的位置。 实际上,我们可以使用“$(PODS_ROOT)/Headers/Public/React Core/”
,但这会破坏库的linting(运行
pod lib lint
),因为在这个linting过程中生成的测试应用程序没有像常规React本机应用程序的pod文件那样依赖于本地开发人员pod的pod文件

关注点2 我们希望我们的库能够支持这样的场景:消费者通过使用框架,而捆绑包会反应到框架目录中。这意味着标题将不再位于
ios/Pods/Headers
文件夹中,我们的pod需要依赖
React
框架:

Pod::Spec.new do|s|
# ... 还有很多其他的东西
s、 框架“反应”
s、 依赖项“反应”
结束
但是当添加这个时,消费者Podfile必须调用
use\u框架

据我所知,有:

  • 没有办法“温和地”依赖于框架(只有在框架存在时才使用它)
  • 没有优雅的方法来确定一个正在使用的Podfile是否正在调用
    use\u frameworks,来自Podspec中
  • 这是真的吗

    我目前(和超级黑客)的解决方法是假设消费者Podfile的位置并检查是否存在“use_framework!”:

    app_path=File.展开_path(“....”,uuu dir_uu)
    podfile\u path=File.expand\u path('ios/podfile',app\u path)
    开始
    podfile=File.read(podfile\u路径)
    使用\u frameworks=podfile.scan(/\n\s*使用\u frameworks!\n/)。有吗?
    营救
    使用=false
    结束
    Pod::规格新do | s|
    # ... 还有很多其他的东西
    #有条件地依赖于React框架
    如果使用了(u)框架,
    s、 框架“反应”
    结束
    #由于某些原因,仍然需要反应吊舱,具体取决于反应吊舱。。。
    s、 依赖项“反应”
    结束
    
    我想问你一个问题
    您是否有任何关于更优雅的方法来实现导入“React/RCTBridge+Private.h”标题和支持消费者的目标的想法,而不管他们是否使用“use\u frameworks!”?

    您目前使用的方法是什么?