【问题标题】:Xcode 12 deployment target warnings when using CocoaPods使用 CocoaPods 时的 Xcode 12 部署目标警告
【发布时间】: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 设备上不安装操作系统更新,但他们会为这些设备安装更新主动下载或更新应用程序。

标签: xcode cocoapods warnings xcode12


【解决方案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 原生用户:

    1. 删除您的node_modules 文件夹
    2. 运行yarn install
    3. 删除Pods 文件夹和里面的Podfile.lockfile(在ios文件夹里面)
    4. 转到终端的ios 文件夹并运行pod install
    5. 运行 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,所以我的步骤:

      1. 删除 Podfile.lock 文件
      2. 更改为平台 :ios, '10.0'
      3. 删除 ios 文件夹中的 Pods 文件夹
      4. 转到终端和 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 文件中的第二个错误stackoverflow.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 年末的更新答案:stackoverflow.com/a/70316588/8094969
          猜你喜欢
          • 2021-02-18
          • 2012-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-29
          • 1970-01-01
          相关资源
          最近更新 更多