React native 根据React Core(React/RCTBridge&x2B;Private.h)编写CocoaPod
我正在共同编写一个React本机库,它依赖于RCTBridge。在实现对的支持的过程中,我正在写一篇文章,想知道声明对React的依赖性的最佳方式是什么 关注点#1 我目前的方法是对(不推荐使用的)React pod(我相信它将被解析为消费应用程序的Podfile指定的dev pod)具有PodSpec依赖性,并将React头的路径添加到xcconfig的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| #
头搜索路径中,基本上:
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!”?您目前使用的方法是什么?