如何将React Native封装为iOS Framework进行分发?
React Native 封装为 iOS Framework 分发的方案探索与疑问
我正在探索将React Native应用封装为Framework进行分发的可行方案,整体分为三个模块:
- RN App:包含需通过Framework工具类暴露给客户端应用的模块;
- iOS原生Swift Framework:将RN App的
bundle.js封装在Framework内部; - iOS原生Swift客户端App:集成该Framework,通过其中的工具类获取RN模块(如视图)用于客户端UI。
目前Framework通过Cocoapods引入React Native,Podfile配置如下:
target 'TestAppFramework' do config = use_native_modules! use_react_native!( :path => config[:reactNativePath], :fabric_enabled => true, :ios_folder => 'TestAppFramework' ) end
use_react_native方法会调用RN项目中的react_native_pods.rb,引入约50个依赖Pod。
静态方案问题
默认RN以静态方式引入依赖,Podfile未使用use_frameworks!,预期依赖会被编译进Framework,但将Framework接入客户端项目时,生成的-Swift.h头文件无法找到@import React;,导致编译失败;若在客户端Cocoapods中添加React Native则可运行,但会出现大量重复依赖警告。
疑问:客户端未直接对接RN,为何依赖无法在Framework内正常可见?
动态方案问题
期望仅将bundle.js和Swift接口代码放入Framework,不打包RN依赖Pod,由客户端提供这些依赖,原以为Podfile中使用use_frameworks!可实现,但实际效果与未使用时一致,依赖仍被打包进Framework。
疑问:能否实现Framework不包含依赖Pod,由客户端负责提供?
Cocoapods分发方案问题
考虑将Framework作为Cocoapod分发,但因依赖数量多且react_native_pods.rb中的逻辑难以迁移,看起来不切实际。
疑问:能否在Podspec中实现
use_react_native方法在Podfile中的相同功能?
恳请各位提供相关建议!
内容的提问来源于stack exchange,提问作者btxios
相关产品推荐
相关产品推荐

