iOS Simulator部署目标设置为7.0,但是此平台支持的部署目标版本范围是8.0至12.1。


169

我在Xcode 10.1中收到以下警告消息。

iOS Simulator部署目标设置为7.0,但是此平台支持的部署目标版本范围是8.0到12.1。

我的模拟器OS在12.1 Xcode 10.1中

然后我更新了pod文件。

在此处输入图片说明

我的部署目标是9.0

在此处输入图片说明

在我的目标

在此处输入图片说明


请在user-images.githubusercontent.com/5786033/…中验证目标 ,编辑:在框架中
Vinaykrishnan,

@ Vinaykrishnan,我检查了它是9.0
iOS

4
这个家伙有同样的问题,检查可以帮助您,github.com / flutter/ flutter / issues/ 22123github.com/CocoaPods/CocoaPods/issues/8069。打开Xcode并有File左上方旁边的苹果图标,然后打开Workspace Settings并更改构建系统to`遗留构建System`。如果您还没有尝试过,那么stackoverflow.com/a/52552878/2323806
Vinaykrishnan

Answers:


235

您可以将podfile设置为自动将所有podfile的部署目标与当前项目部署目标相匹配,如下所示:

post_install do |pi|
    pi.pods_project.targets.each do |t|
      t.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
      end
    end
end

感谢您的出色回答!很好奇-是否有可能使第四行的“ 9.0”自动化……从而仅从您的主项目中获得部署目标?
Fattie

9
如果您已经有了另一个安装后挂钩怎么办?我收到一条错误消息,指示不支持多个帖子安装
George Salamanca

如果Pod的最低部署目标已经高于强制实施的目标,则这似乎不起作用。因此,我们需要考虑原始值。
Grigory Entin

1
@GeorgeSalamanca,您可以放入相同的post_install块
Simon Hansen

5
@Fattie我相信你可以做config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
rmp251 '20

97

问题出在Pod文件部署目标iOS版本中,而不是在项目部署目标iOS版本中,因此您需要将Pod的部署iOS版本更改为高于8.0的任何版本,才能打开项目工作区并执行以下操作:

1-单击窗格。

2-选择每个项目和目标,然后单击构建设置。

3-在“部署”部分下,将“ iOS部署目标”版本更改为大于8.0的任何版本(最好尝试使用相同的项目版本)。

4-对吊舱中的所有其他项目重复此操作,然后运行该应用程序。

详情请看照片 在此处输入图片说明


52
Pods项目是自动生成的。你不应该惹它。
Mihai Damian

2
我没有弄乱Pod(尽管我发现这样做是没有问题的,因为它是人为制造的。)我只是更改了可以接受的iOS版本。这是一个比被接受的解决方案更好的解决方案,它迫使您降低自己的项目iOS版本。
艾哈迈德·埃尔玛·贝玛威

6
我并不是说可以接受的解决方案更好,只是编辑生成的文件是不好的做法。由Cocoapods生成的任何文件都不应手动编辑,因为将来可能会被覆盖。如果您不喜欢输出,则可以通过post_install在Podfile中进行调整。这些文件甚至都不应提交到您的仓库中。
米海达米安

1
@Muhammad必须从POD开发人员本人那里得到回答,无论如何对我来说,我不会在发布项目时对我的项目提出任何警告
Ahmed El-Bermawy

1
您可以选择所有它们并立即进行更改
Rami Alloush

47

迭代来自Tao-Nhan Nguyen的答案,考虑为每个Pod设置的原始值,仅在大于8.0时才进行调整...将以下内容添加到Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if Gem::Version.new('8.0') > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '8.0'
      end
    end
  end
end

1
这为新创建的
React

非常好的Grigory
Tao-Nhan Nguyen

这对我有用。
a_lovelace

42

您可以删除pod部署目标,而不是在pod post安装中指定部署目标,这会导致从Podfile平台继承部署目标。

您可能需要运行pod install才能生效。

platform :ios, '12.0'

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
      end
    end
  end

40

如果您将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.

发生这种情况的原因是,已放弃了对iOS 8的支持,但该Pod的最低部署目标是iOS 8。

在此问题解决之前,您可以将以下内容添加到Podfile中:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
    end
  end
end

这将从项目中的所有Pod中删除部署目标,并允许他们继承在Podfile顶部指定的项目/工作区部署目标。


这样安全吗?
Cublax

使用installer.pods_project&.targets&.each do |target|如果您已incremental_installation设置为true。
何塞

这是最好的解决方案
Lena Bru


10

我解决了这个问题,将构建系统更改Legacy Build SystemNew Build System

在Xcode v10 +中,选择“文件”>“项目设置”

在以前的Xcode中,选择“文件”>“工作区设置”

在此处输入图片说明

将Build SystemLegacy Build SystemNew Build System->更改为。

在此处输入图片说明


1
这对于我来说不再是一个合适的解决方案,因为需要新的构建系统(默认)来生成SwiftUI预览:(
Ric Santos

3
这不是一个真正的解决方案。
smileBot

恢复旧系统不是解决办法
FaultyJuggler

6

请尝试以下步骤:

  1. 删除您的Podfile.lock
  2. 删除您的Podfile
  3. 建立项目
  4. 从Firebase添加初始化代码
  5. cd /ios
  6. pod install
  7. 运行项目

这就是对我有用的。


3

我们可以将项目部署目标应用于所有pod目标。通过在您的Podfile的末尾添加以下代码块来解决此问题:

post_install do |installer|
  fix_deployment_target(installer)
end

def fix_deployment_target(installer)
  return if !installer
  project = installer.pods_project
  project_deployment_target = project.build_configurations.first.build_settings['IPHONEOS_DEPLOYMENT_TARGET']

  puts "Make sure all pods deployment target is #{project_deployment_target.green}"
  project.targets.each do |target|
    puts "  #{target.name}".blue
    target.build_configurations.each do |config|
      old_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
      new_target = project_deployment_target
      next if old_target == new_target
      puts "    #{config.name}: #{old_target.yellow} -> #{new_target.green}"
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = new_target
    end
  end
end

结果日志:

修复Pod部署目标版本警告


真好!彩色日志非常有用
Asaf Pinhassi

1

如果您来自react-native并面对此错误,请执行此操作

  1. 打开Podfile(您的项目> ios> Podfile)
  2. Podfile中的注释触发器功能如下
#use_flipper!
 #post_install do |installer|
   #flipper_post_install(installer)
 #end
  1. IOS文件夹内的终端中输入此命令pod install

是的,那是希望它对您有用


0

对于有此问题的Cordova开发人员

尝试设置

<preference name="deployment-target" value="8.0" />

在confix.xml中


-3

就我而言,我同时使用了这两者npm installyarn install这就是为什么我遇到这个问题,所以为了解决这个问题,我删除了package-lock.json和node_modules,然后我做到了

yarn install
cd ios
pod install

它对我有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.