【问题标题】:Error running pod install with swift使用 swift 运行 pod install 时出错
【发布时间】:2019-02-15 14:06:32
【问题描述】:

我听从了 Cocoapods 的指示。

下面是我的 Podfile:

platform :ios, '8.2'

pod 'SwiftyJSON', '~> 2.1'
pod 'SwiftSpinner', '~> 0.6'
pod 'Alamofire', '~> 1.1'
pod 'SuperRecord', '~> 1.2'
pod 'Toucan

当我执行 pod install 时,出现以下错误:

用 Swift 编写的 Pod 只能作为框架集成;此功能仍处于测试阶段。将use_frameworks! 添加到您的 Podfile 或目标以选择使用它。

更新:

以下是我的控制台日志:

$ pod install
Analyzing dependencies
Downloading dependencies
Installing Alamofire (1.1.4)
Installing SuperRecord (1.2)
Installing SwiftSpinner (0.6.0)
Installing SwiftyJSON (2.1.3)
Installing Toucan (0.2.0)
[!] Pods written in Swift can only be integrated as frameworks; this feature is still in beta. Add `use_frameworks!` to your Podfile or target to opt into using it.

【问题讨论】:

  • @DharmeshKheni 上面列出的所有库都在 Swift 中。
  • 你使用的pod版本是什么,使用“pod --version”获取。确保使用“sudo gem install cococapods”将 Cocoapods 安装更新到最新版本。

标签: ios swift cocoapods


【解决方案1】:

添加“use_frameworks!”到你的 Podfile:

请参阅下面的示例 Podfile

target 'MySample' do

  pod 'AFNetworking', '~> 2.5'

  pod 'Net', '~> 0.2' #This is a sample in Swift

  use_frameworks! # <--Use this line
end

【讨论】:

  • Ruby 中的注释标志是“#”而不是“//”。
【解决方案2】:

添加“use_frameworks!”到你的 Podfile 因为:

因为 Apple 不允许您构建包含以下内容的静态库 迅速。与 Objective-C 不同,Apple 不发布 Swift 标准 iOS 运行时库。这将语言版本与 平台版本。当你使用 Swift 构建应用程序时,你 自己负责运送它们。默认情况下,Xcode 使用 swift-stdlib-tool 来处理复制 Swift 运行时 dylib,但是 尝试发布使用 Swift 的框架时工具不足 仅使用 Objective-C 的应用程序。您的应用程序可执行文件和 您发布的框架都将使用相同的 dylib 集,它们是 嵌入到应用程序包的 Frameworks 子目录中。

首先,这是因为您无法链接到不同版本的 标准库。此外,最好只嵌入它们 一次而不是多次,因为内存大小的限制和 网络速度,与分发有关。 您可以通过框架使 CocoaPods 集成到您的项目中 通过指定 use_frameworks! 而不是静态库。如果是这样 不存在,您将无法集成依赖项,如果您 依赖于包含 Swift 源代码的 pod。

参考:http://blog.cocoapods.org/CocoaPods-0.36/

【讨论】:

  • 一些 Pod 不能很好地与“use_frameworks!”一起工作。那么您能否指导如何同时处理两个 pod?
【解决方案3】:

正如它在 Podfile 中所写的那样,它说取消注释 use_frameworks!你正在使用 Swift,所以你只需取消注释这一行,一切正常

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks! 

target 'YourProjectName' do
  pod 'SwiftyJSON', '~> 2.1'
  pod 'SwiftSpinner', '~> 0.6'
  pod 'Alamofire', '~> 1.1'
  pod 'SuperRecord', '~> 1.2'
  pod 'Toucan'
  # all other pods goes here 
end

target 'YourProjectName' do

end

target 'YourProjectName' do

end

【讨论】:

    【解决方案4】:

    在我的情况下,我曾经通过命令 sudo gem install cocoapods 升级 cocoapods,我的问题得到了解决。我在我的项目中使用了 Objective-c 以及 swift 库。

    【讨论】:

      【解决方案5】:

      解决方法很简单。您只需将这些行添加到您的 pod 文件中:

      target 'PassDTAFirebase' do
      
        inherit! :complete
      
          # Here your pods
      
        use_frameworks! 
      
      end
      

      【讨论】:

        猜你喜欢
        • 2017-03-26
        • 2017-11-30
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        • 2022-07-04
        • 2020-08-13
        • 2020-10-30
        • 1970-01-01
        相关资源
        最近更新 更多