使用 CocoaPods 时的 Xcode 12 部署目标警告

Posted

技术标签:

【中文标题】使用 CocoaPods 时的 Xcode 12 部署目标警告【英文标题】:Xcode 12 deployment target warnings when using CocoaPods 【发布时间】:2020-11-13 07:25:23 【问题描述】:

我在 Xcode 12 上收到此警告:

ios Simulator 部署目标IPHONEOS_DEPLOYMENT_TARGET 设置为 8.0,但支持的部署目标版本范围为 9.0 到 14.0.99

如何支持这个版本?

【问题讨论】:

如果这是为了分发一个应用程序,你应该考虑到iOS 8根据各种统计网站几乎没有用户。 为了强调@PhillipMills 的观点,iOS 8 支持的所有设备也受 iOS 9 支持。很少有人在 iOS 设备上不安装操作系统更新,但他们会为这些设备安装更新主动下载或更新应用程序。 【参考方案1】:

Flutter 现在需要一条额外的线路才能在 2021 年末开始工作。

将更新后的代码 sn-p 粘贴到 Podfile 的末尾并运行 pod install 命令。

  post_install do |installer|
     installer.pods_project.targets.each do |target|
         flutter_additional_ios_build_settings(target)
         target.build_configurations.each do |config|
            if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 10.0
              config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
            end
         end
     end
  end

注意:如果您的 podfile 中有以下代码,则将其替换为上述代码。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

【讨论】:

【参考方案2】:

对于 react 原生用户:

    删除您的node_modules 文件夹 运行yarn install 删除Pods 文件夹和里面的Podfile.lockfile(在ios文件夹里面) 转到终端的ios 文件夹并运行pod install 运行 yarn run ios 或您的命令

无需解决方法

【讨论】:

【参考方案3】:

更新:要解决此问题,您只需将Deployment Target 更新为9.0。这可以通过打开.xcworkspace 文件、在Xcode 上选择Pods.xcodeproj 并将iOS Deployment Target 更新为9.0 或更高版本来更新,如下图所示。

另一个简单的解决方法是将以下内容添加到您的 Podfile 并在目录中的终端上运行 pod install

post_install do |installer|
 installer.pods_project.targets.each do |target|
   target.build_configurations.each do |config|
     if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
     end
   end
 end
end

Previous: 除非您导入支持文件,否则您无法在 Xcode 12 上为 iOS 8.0 提供支持。要默认提供支持,您必须使用Xcode 11。最好检查在iOS 8 上使用您应用的用户数量,并将支持的最低版本更新为iOS 9 或更高版本。

【讨论】:

我的目标是 iOS 12,这也是我的 podfile 中的内容,但我仍然收到这些警告。也掉了吗? 检查是否低于 9.0 正是我所追求的 - 这为我节省了大量时间!谢谢【参考方案4】:

我正在使用 Flutter,所以我的步骤:

    删除 Podfile.lock 文件 更改为平台 :ios, '10.0' 删除 ios 文件夹中的 Pods 文件夹 转到终端和 Pod 安装所有内容

【讨论】:

如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review【参考方案5】:

我还需要添加

s.platform = :ios, "9.0"

添加到我的 .podspec 文件以使其正常工作,以及来自上述(或以下)任何答案的 post_install 脚本。

注意:s.platform 是

s.platform = :ios

【讨论】:

【参考方案6】:

发生这种情况是因为 Xcode 12 中已放弃对 iOS 8 的支持,但有问题的 pod 的最低 部署 目标仍然是 iOS 8. 这记录在Xcode 12 release notes:

弃用

Xcode 现在支持在运行 iOS 9.0 及更高版本的 iOS 设备上调试应用和运行测试。

解决方法。您现在可以将以下内容附加到您的Podfile 作为解决方法(然后像往常一样运行pod install):

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
        config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
      end
    end
  end
end

这将从使用 iOS 8 或更低版本的所有 pod 中删除部署目标设置,允许它们简单地继承您在 Podfile 顶部指定的项目部署目标。例如:

platform :ios, '10.0'

【讨论】:

【参考方案7】:

这里有一个简短的工作解决方案!只需将下面的代码 sn-p 复制并粘贴到 Podfile 的末尾,然后运行 ​​pod install 命令即可。

    post_install do |installer|
     installer.pods_project.targets.each do |target|
         target.build_configurations.each do |config|
            if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
              config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
            end
         end
     end
  end

【讨论】:

这解决了这个问题,但如果您使用某些库,它会导致另一个错误。 Flutter/致命错误:使用当前路径提供程序时找不到“Flutter/Flutter.h”文件。 @NicholasMuir 这里是更新的代码,它也解决了 Flutter.h 文件中的第二个错误***.com/a/70316588/8094969【参考方案8】:

这是您的可可豆荚的目标问题。 对我来说,答案是把这段代码放在你的 pod 文件的末尾:

 post_install do |installer|
     installer.pods_project.targets.each do |target|
         target.build_configurations.each do |config|
             config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
             config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
             config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
         end
     end
  end

它解决了我所有的问题,编译和归档项目。

另一种方法是更改​​ pods 项目中的 IPHONEOS_DEPLOYMENT_TARGET,如下图所述:

最好的问候。

【讨论】:

我认为只有这行是必要的:config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' 感谢@SoftDesigner 我会尝试不使用它。 我不建议手动更改设置,因为 Pods 项目是自动生成的,并且您在其中设置的任何内容都会在您下次调用 pod installpod update 时被覆盖。 这是 2021 年末的更新答案:***.com/a/70316588/8094969

以上是关于使用 CocoaPods 时的 Xcode 12 部署目标警告的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 使用 CocoaPods 和 xcode 6.3

无法在 macOS Monterey 版本 12.0 Beta 中安装 Cocoapods - Xcode 13.0(13A233)

macOS 10.12.1 + Xcode 8.1 安装cocoapods 1.1.1

Xcode8 重新配置 CocoaPods -替换阿里源

无法在现有 Xcode 项目中安装 cocoaPods

无法通过 cocoapods 将 Firebase 安装到我的 Xcode 项目中