Xcode 使用 CocoaPods 时出现 12 个部署目标警告

Xcode 12 deployment target warnings when using CocoaPods

我在 Xcode 12:

收到此警告

The iOS Simulator deployment target IPHONEOS_DEPLOYMENT_TARGET is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99

如何支持这个版本?

更新:要解决此问题,您只需将 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

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

这是您 cocoa pods 的目标的问题。 对我来说,答案是将这段代码放在你的 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,如下图所示:

最好的问候。

这里有一个简短的工作解决方案!只需将下面的代码片段复制并粘贴到 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 < 12.0
              config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
            end
         end
     end
  end

在这种情况下,12.0 是 AppStore 提交的最低支持 iOS 版本。您可以根据项目要求进行更改。

发生这种情况是因为 iOS 8 的支持已在 Xcode 12 中删除,但最小deployment 违规 pod 的目标仍然是 iOS 8。这记录在 Xcode 12 release notes:

Deprecations

  • Xcode now supports debugging apps and running tests on iOS devices running iOS 9.0 and above.

解决方法。您可以将以下内容附加到您的 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 或更低版本的所有 pods 中删除部署目标设置,允许它们简单地继承您在 [=12] 顶部指定的项目部署目标=].例如:

platform :ios, '10.0'

我还需要添加

s.platform = :ios, "9.0"

我的 .podspec 文件,以及上述(或以下)答案中的 post_install 脚本。

注意:s.platform 是

s.platform = :ios

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

  1. 删除Podfile.lock 文件
  2. 更改为平台:ios、'10.0'
  3. 删除 ios 文件夹中的 Pods 文件夹
  4. 转到终端和 Pod 安装一切

Flutter 现在需要额外的一行才能在 2021 年末运行。

将下面更新的代码片段粘贴到您的 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