如何删除use_frameworks!并继续在 Objective-C 项目中使用 swift pods?

Sud*_*Plz 10 ios cocoapods swift react-native-ios react-native-firebase

我们的项目是一个Objective-c项目。

由于我们正在使用,react-native-firebase我们不能再 use_frameworks!在 cocoapods 中使用

问题是我们有一个swift pod 依赖项PromiseKit),要使用 swift 依赖项use_frameworks!,据我所知,我们必须使用。

我想要做的是两全其美,也就是:

  • 删除use_frameworks!以便react-native-firebase工作和
  • 保持PromiseKit快速依赖。

当前 Podfile:

platform :ios, '10.0'

target 'TestApp' do

    use_frameworks!

    # swift pod
    pod 'PromiseKit'

    # react-native-firebase
    pod 'Firebase/Core', '~> 5.3.0'
    pod 'Firebase/DynamicLinks', '~> 5.3.0'
    pod 'Firebase/Messaging', '~> 5.3.0'

end
Run Code Online (Sandbox Code Playgroud)

我注意到自Cocoapods 1.5以来,有此命令:modular_headers => trueuse_modular_headers我感觉可能与我正在寻找的解决方案相关或不相关,但我似乎无法将这些点联系起来。

编辑:

如果我删除use_frameworks!(即使我用 替换它use_modular_headers!),我会收到此错误:

在此处输入图片说明 请问有什么帮助吗?

Ris*_*abh 8

我也遇到过这个问题。并为此找到一个完美的解决方案。

https://github.com/joncardasis/cocoapods-user-defined-build-types

这是一个 cocoapods 插件,我们可以通过它指定在特定 pod 上使用“动态框架”(即“use_framework”做什么)。cocoapods 目前不支持此功能,这就是为什么使用此插件来解决您的问题。


Pau*_*ien 6

更换use_frameworks!use_modular_headers!的Podfile。

来自引用的CocoaPods 1.5 发行说明

使用 CocoaPods 1.5.0,开发人员不再受限于指定 use_frameworks!在他们的 Podfile 中安装使用 Swift 的 Pod。与 Objective-C 的互操作应该可以正常工作。但是,如果您的 Swift pod 依赖于 Objective-C,则您需要为该 Objective-C pod 启用“模块化标头”(见下文)。

使用 CocoaPods 1.9.0,现在可以静态和动态地构建框架。用use_frameworks! :linkage => :static