Flutter iOS 构建失败:DVTCoreDeviceEnabledState_Disabled
flutter build ipa
在使用 Xcode 14.3 和 Flutter 3.7.9 的 macOS v13.3 (Ventura) 上失败。
日志输出:
xcodebuild[83777:409216] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
flutter run
在 iOS 模拟器上运行没有问题。
目前,这是唯一适合我构建 Archive ipa 的解决方案。无需回滚到 Xcode 14.2。
所以现在的解决方案是,打开 ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh 文件。
找到这一行:
if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink "${source}")"
fi
修改为
if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink -f "${source}")"
fi
添加 -f 并保存文件。
这对我有用。希望这可以帮助。
您不需要回滚到 Xcode 14.2。以下步骤在 14.3 版本中对我有用:
确保您将版本 11 作为目标处理:
在 podfile 文件中...
代替
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end
为
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'] = '11.0' end end end
确保调试包含在 LaunchAction Xcode 架构中。在 Runner.xcscheme 文件中,您需要确保包含类似的内容......
<LaunchAction buildConfiguration = "Debug" //...more lines </LaunchAction>
IPHONEOS_DEPLOYMENT_TARGET
本身不起作用,但将 LaunchAction 设置为 Debug 为我解决了问题。
- Craig Rees 2023-05-12
我遇到过同样的问题。
执行flutter upgrade
(从版本3.7.9到3.7.10)后,它再次工作。
我将构建配置从发布模式更改为调试模式,并且构建成功。
您可以从 Xcode 更改构建配置。转到产品选项,然后方案。编辑方案,在下拉菜单中把它改为调试。
将 Flutter 升级到 3.7.12,然后将构建配置从发布模式更改为调试模式。之后,iOS 模拟器应该可以工作了。
感谢 Kiumars 的回答。
下载 Xcode 14.2 版本,您可以使用 Xcode Select 来实现此目的。
我遇到了这个错误,我按照以下步骤修复了它:
- 首先我删除了 Xcode 14.3
- 我下载了 Xcode_14.2
- 安装了它
就我而言,有两种方法对我有用。第一种方法是将 Xcode (14.3) 回滚到 (14.2)。第二种方式是将Flutter升级到3.7.12,然后打开ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh文件。找到这一行
if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink "${source}")"
fi
将其更改为:
if [ -L "${source}" ]; then
echo "Symlinked..."
source="$(readlink -f "${source}")"
fi
将 cocoapods 更新到 1.12.1 为我解决了这个问题。
您可以在 Xcode 中构建 iOS 应用程序,它会给您有关错误的更具体原因。
就我而言,原因是 ruby 语言的方法名称已更改。
我通过将 ReadDotEnv.rb 中的 exists
修改为 exist
修复了该错误。
(.../ios/.symlinks/plugins/flutter_config/ios/Classes/ReadDotEnv.rb)
if File.exist?("#{envs_root}../.envfile")
envFilePath = "#{envs_root}../.envfile"
elsif File.exist?("#{envs_root}/.envfile")
envFilePath = "#{envs_root}.envfile"
您可以通过升级 Flutter 版本来解决该问题。以下是 Xcode 14.3 官方修复的更改日志。
我将频道更改为 master 并运行flutter upgrade
。并重新更改为stable channel
并再次运行flutter upgrade
。之后,我的构建运行良好。
就我而言,我使用的是 Flutter 版本 3.7.1,升级到 3.7.12 解决了这个问题。
检查您的 pod 是否正确安装,如果您忘记为 ios 应用程序安装 pod,则可能会发生这种情况
这个建议对我有用:
在 podfile 文件中...
代替
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
为
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'] = '11.0'
end
end
end
原来,如果你需要同意程序许可协议(PLA)https://appstoreconnect.apple.com/的更新,你会得到这个错误
如果您在 XCode 中打开应用程序,您将在选择开发团队的屏幕上看到有关此问题的红色错误文本。接受许可证并在XCode中单击“重试...”后,它在IntelliJ中正常编译。
运行:
Flutter clean
或者从 Xcode build clean也可以。
Command 'Flutter' not found
吗?
- Peter Mortensen 2023-04-29
出现此问题是因为您将 Xcode 更新到版本 14.3
要解决此问题,您必须通过以下命令将 flutter 升级到版本 3.7.1:
$ cd flutter
$ git checkout 3.7.1
$ flutter build ipa