iOS部署目标“IPHONEOS_DEPLOYMENT_TARGET”设置为8.0,在Flutter中如何更改最小的iOS部署目标?

179

我把项目里所有的东西都改成了9.0,但是很多pod仍然出现同样的错误。

我尝试了很多不同的方法,但都没有奏效。有人知道怎么解决吗?

warning: The iOS 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. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')
warning: The iOS 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. (in target 'GoogleAppMeasurement' from project 'Pods')
warning: The iOS 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. (in target 'FirebaseAuth' from project 'Pods')
warning: The iOS 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. (in target 'GoogleUtilities' from project 'Pods')
warning: The iOS 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. (in target 'vibration' from project 'Pods')
warning: The iOS 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. (in target 'nanopb' from project 'Pods')
warning: The iOS 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. (in target 'BoringSSL-GRPC' from project 'Pods')
warning: The iOS 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. (in target 'gRPC-Core' from project 'Pods')
warning: The iOS 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. (in target 'gRPC-C++' from project 'Pods')

在构建设备时遇到错误。


1
请注意,这些只是警告!它们不是错误。因此,如果您的构建崩溃了,那肯定是其他问题造成的,而不是上面提到的警告。在您的构建输出中搜索单词“error”! :) - Karolina Hagegård
18个回答

226

对我有用的是@raffaelli-l-c和@arhan-reddy-busam回答的结合。

确保您完成以下操作:

  • ios/Flutter/AppFrameworkInfo.plist中将MinimumOSVersion设置为9.0
  • 确保在ios/Podfile中取消注释platform :ios, '9.0'
  • 确保ios/Podfile包含以下后安装脚本:
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        flutter_additional_ios_build_settings(target)
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
        end
      end
    end

在执行生产构建时,以下程序适用于我:

    flutter clean \
        && rm ios/Podfile.lock pubspec.lock \
        && rm -rf ios/Pods ios/Runner.xcworkspace \
        && flutter build ios --build-name=1.0.0 --build-number=1 --release --dart-define=MY_APP_ENV=prod

9
对我来说,只需执行flutter clean && rm ios/Podfile.lock pubspec.lock && rm -rf ios/Pods ios/Runner.xcworkspace 就可以解决我的问题了。 - buncis
49
我认为我们必须手动编辑Podfile已经持续了近一年,这真的很荒谬。但是,是的,这确实解决了问题。 - Cliff Helsel
2
对我来说不起作用,出现以下错误: Generate dPluginRegistrant.h:8:9: error: 'Flutter/Flutter.h'文件未找到 #import <Flutter/Flutter.h> ^ 1 error generated. <unknown>:0: error: failed to emit precompiled header - Harsh Phoujdar
这最终是对我有用的。我收到了一个错误提示: Error: Member not found: 'packageRoot'. ../…/interface/local_platform.dart:46 io.Platform.packageRoot; // ignore: deprecated_member_use - RadicalTurnip
即使我在ios/Flutter/AppFrameworkInfo.plist中将MinimumOSVersion设置为“99.0”,它也没有任何作用!我的最小目标iOS版本仍然太低!...似乎Flutter忽略了这个设置。 - Karolina Hagegård

89

我用这段代码解决了它,谢谢!在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

1
@DavideBicego,我被卡住了已经一个星期了,希望有人能回复并帮助我们。我已经阅读了无数的stackoverflow答案并尝试了所有方法。基本上它似乎陷入了一个循环中,其中一个解决方案说要降级cocoapods,而flutter 2则建议保持最新版本。 - Harsh Phoujdar
2
@HarshPhoujdar 我成功解决了问题,更新了大部分依赖项。特别是Firebase包是有问题的。它们可能与flutter v2不兼容。我从firebase_core: ^0.7.0、firebase_crashlytics: ^0.4.0+1、firebase_messaging: ^8.0.0-dev.15升级到firebase_core: ^1.0.4、firebase_crashlytics: ^2.0.1、firebase_messaging: ^9.1.2。 - Davide Bicego
2
@bks 它会删除所有目标中包含的部署目标,因此它将被设置为 Xcode 确定的默认值。 - ReinstateMonica3167040
1
@ReinstateMonica3167040 谢谢! - bks
1
对于Flutter应用程序,应在“installer.pods_project.targets.each do |target|”行之后添加“flutter_additional_ios_build_settings(target)”。 - goldensoju
显示剩余5条评论

23

前往Pods,并且对于你正在使用的每个框架,根据我的截图所示更改iOS版本。

输入图片描述


3
这不是正确的(至少不完全正确)- ios/Podfile中的脚本应该自动执行此操作,请检查@"Je suis alrick"的答案! - funder7

17
这是因为XCode 12仅支持构建iOS目标版本9-14。不幸的是,flutter默认设置的iOS目标版本是8。但是你应该能够在使用XCode的ios/Runner.xcworkspace文件中更改目标版本。请参见flutter文档中的“Review Xcode project settings”部分-> “Deployment Target:”标题。
你也可以尝试将flutter更新到1.22 beta版,该版本支持iOS 14和XCode 12(如此处所述)。

4
我认为苹果需要着手为开发者服务,因为目前情况非常棘手。 - dontknowhy
4
我认为Flutter应该在更新构建方面做得更好。 - Modesto Cabrera
1
如果你曾经编写过本地代码,你就知道苹果是如何做的。我现在被迫使用React Native,相比于在两个平台上全力以赴地使用本地代码,这真是一场噩梦。每次升级都让人头疼不已。 - Tob

7

2
我必须以这种方式运行命令:flutter pub cache repair - Gene Bo
谢谢您提供的更新解决方案,这是唯一一个对我起作用的。 :) - Jason Waku

4

所有这些答案,实际上,你可以安全地忽略那些日志!它们只是警告,而不是错误!

如果构建失败了,那肯定是因为其他原因,而不是这个。在构建的输出日志中执行Command + F,然后搜索单词 “error”,这样就能知道真正的问题所在。

(再次强调,如果您真的想要摆脱这些警告,您可以在 Android Studio 项目中执行 Command + Shift + F,或者如果您使用不同的 IDE,则可进行全局搜索,并搜索“IPHONEOS_DEPLOYMENT_TARGET”。接下来,在您的 pod 中,无论您在哪里看到该值设置为“8.0”,您都可以将其更改为指定范围内的任何值,例如'9.0'或'10.0'。这对您应用程序的功能不会产生任何影响,但是您将不再看到警告!)


3

在几天的尝试后,我发现唯一有效的方法是删除Flutter项目中的整个ios目录,然后重新构建它:

flutter create .

GoogleService-Info.plist添加到Runner。 在Xcode中添加签名和功能。 在Xcode中添加目标属性,例如登录。
https://dev59.com/YVIG5IYBdhLWcg3wjBIU#67224108所述。

1
通过这样做,实际上在 Podfile 中创建了必要的 Flutter 内容。 - Gustavo Ferrufino

2

对我而言有效的方法是,在 ios 文件夹中打开 XCode。然后在签名部分检查并解决可能存在的账户相关问题。然后再次运行 flutter run 命令,这次应该就能成功了。虽然不确定为何与错误有关,但它起作用了。


2

您需要更新您的Pod文件

iOS项目:

  1. 设置平台操作系统和版本,即Pod文件的第一行,对于我来说是...

platform :ios, '13.6'

  1. 将以下附加代码添加到您的Pod文件中:
post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.6'
      end
    end
  end
end

macOS 项目:

  1. 设置平台操作系统和版本,Pod 文件的第一行,例如:

platform :macos, '11.5'

  1. 在你的 Pod 文件中添加以下额外代码:
post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '11.5'
      end
    end
  end
end

对于 tvOS 和 watchOS,操作类似:

tvOS - ['TVOS_DEPLOYMENT_TARGET'] = 'VERSION'

watchOS - ['WATCHOS_DEPLOYMENT_TARGET'] = 'VERSION'

就是这样,干杯!


1

我感到非常厌烦,所以我只是在Xcode 13中编译了。 对我有效!自从升级到Flutter 2.5.2以来,我遇到了这个奇怪的问题。小麻烦。

ios/Podfile:

platform :ios, '10.0'

我将最低操作系统更改为10


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接