我已经构建了一个反应原生库模块(使用 RN 0.63)。该模块依赖于一些第三方 SDK。当与 Android 集成时(使用 .aar 文件),它工作得很好。在 iOS 的情况下,我已经能够让库模块在没有 SDK 的情况下工作(使用 swift,因此使用桥接头)。在添加 SDK 时,我收到诸如 .h is not avaialble 之类的错误。
这是我的目录 我的目录结构:
react-native-lib
--android
--ios
----MyCls.swift
----MyCls.m
----react-native-lib-Bridging-Header.h
----SDKS
------DEBUG
--------A.framework
--------B.framework
--------A-Debug.podspec
--------B-Debug.podspec
------THIRDPARTY
--------JSONModel.framework
--------CocoaLumberjack.framework
--------... other frameworks
--react-native-lib.podspec
--Example
--index.js
--Logger.swift
--package.json
我在 Swift 中有一个使用 SDKS 文件夹的示例应用程序,但我似乎无法让 RN 识别框架文件/头文件。react-native-lib的Podspec文件最后几行如下:
...
s.dependency "React"
s.dependency 'JSONModel', '~> 1.8.0'
s.dependency 'CocoaLumberjack', '~> 3.6.1'
我的示例应用程序 Podfile:
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '11.0'
use_frameworks!
project 'example', {
'Debug' => :debug,
'Release' => :release,
}
#
def applibs
pod 'A-Debug', :configuration => ['Debug'], :path => '../node_modules/react-native-lib/ios/SDKS/DEBUG/A-Debug.podspec'
# ... A-Release, B-Debug, B-Release
# The release folders not shown in structure above.
end
target 'example' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
applibs
# Disabled Flipper because of use_frameworks!
end
我不确定我做错了什么以及如何克服这个问题。关于如何将此类 3rd 方 sdk 集成到库模块中的文章似乎并不多。我已经探索过类似的问题,例如这个仍未解决且信息不足的问题。